当前位置: 首页 > 科技观察

学习Git命令就是这么简单

时间:2023-03-14 22:23:32 科技观察

我平时用Git的时候,用的Git命令不多。在我们的工作中,我们通常会使用一些可视化工具或者编辑器自带的一些插件来维护Git仓库,但是我们也需要记住一些常用的Git命令来适应一些特殊的场景。下面是我收集整理的一些常用和不常用的Git命令。希望能帮助大家更好的掌握Git的使用。一点帮助或启发,请不要吝啬你的点赞和收藏,你的肯定是我前进最大的动力😁创建一个新的git存储库。这个版本库的配置、存储等信息都会保存在.git文件夹中#初始化当前项目$gitinit#新建一个目录,初始化到Git代码库$gitinit[project-name]#创建一个空的指定目录中的目录Git存储库。运行此命令将创建一个名为directory的空目录,其中仅包含.git子目录。$gitinit--bare#下载一个项目及其整个代码历史#这个命令是将一个版本库复制到另一个目录中,同时也将所有分支复制到新的版本库中。这样就可以将配置更改设置提交到新仓库中的远程分支$gitclone[url]。可以是版本库的设置,也可以是system或者global#显示当前Git配置$gitconfig--list#编辑Git配置文件$gitconfig-e[--global]#输出,设置基本的全局变量$gitconfig--globaluser.email$gitconfig--globaluser.name$gitconfig--globaluser.email"MyEmail@gmail.com"$gitconfig--globaluser.name"MyName"#定义当前用户所有提交的作者邮箱.$gitconfig--globalalias.#为Git命令创建快捷方式(别名)。$gitconfig--systemcore.editor帮助git对内置的命令进行了非常详细的解释,可以作为我们快速参考#查找可用命令$githelp#查找所有可用命令$githelp-a#查找特定命令文档中#githelp$githelpadd$githelpcommit$githelpinitstatus显示索引文件(即当前工作空间)和当前头指针指向的提交之间的区别#Showbranches,untrackedfiles,变化及其他差异$gitstatus#查看其他gitstatus使用情况$githelpstatus信息获取一些文件、一些分支、某次提交等git信息#显示提交历史,以及每次更改的文件$gitlog--stat#Search提交历史,根据关键字$gitlog-S[keyword]#显示某次commit后的所有变化,每次commit占一行$gitlog[tag]HEAD--pretty=format:%s#显示某次commit后的所有变化提交,它的“commitdescription"必须满足搜索条件$gitlog[tag]HEAD--grepfeature#显示文件的版本历史,包括文件重命名$gitlog--follow[file]$gitwhatchanged[file]#显示与指定文件相关的每个差异file$gitlog-p[file]#显示过去5次提交$gitlog-5--pretty--oneline#显示所有提交的用户,按提交次数排序$gitshortlog-sn#显示指定文件被修改的人和时间$gitblame[file]#显示暂存区和工作区的区别$gitdiff#显示暂存区和上一次提交的区别$gitdiff--cached[file]#显示工作区和上一次提交的区别当前分支的最新提交$gitdiffHEAD#显示两次提交的区别$gitdiff[first-branch]...[second-branch]#显示你今天写了多少行代码$gitdiff--shortstat"@{0dayago}"#比较暂存区和版本库的区别$gitdiff--staged#比较暂存区和仓库的区别$gitdiff--cached#只比较统计信息$gitdiff--stat#显示某次提交的元数据和内容变化$gitshow[commit]#显示某次提交发生变化的文件$gitshow--name-only[commit]#显示某次提交时,一个文件的内容$gitshow[commit]:[filename]#显示当前分支最近几次提交$gitreflog#查看远程分支$gitbr-r#新建分支$gitbr#查看每个分支上次提交信息$gitbr-v#查看已经合并到当前分支的分支$gitbr--merged#查看还没有合并到当前分支的分支$gitbr--no-merged添加文件到当前工作区如果你不使用gitadd添加文件,那么这些文件将不会添加到后续的提交中#添加一个文件$gitaddtest.js#在子目录下添加一个文件$gitadd/path/to/file/test.js#支持正则表达式$gitadd./*.js#添加指定文件到暂存区$gitadd[file1][file2]...#添加指定目录到暂存区,包括子目录$gitadd[dir]#将当前目录下的所有文件添加到暂存区$gitadd。#每次添加之前都会要求确认#对于同一个文件的多次修改,可以分阶段提交$gitadd-pdeletermandthe上面添加命令,而是从工作区中删除一个文件放在暂存区$gitrm[file1][file2]...#停止跟踪指定文件,但文件会保留在workspace$gitrm--cached[file]分支管理分支,可以使用如下命令对分支进行增删改查、切换等#查看所有分支和远程分支$gitbranch-a#新建分支$gitbranch[branch-name]#重命名分支#gitbranch-m$gitbranch-m[branch-name][new-branch-name]#编辑分支介绍$gitbranch[branch-name]--edit-description#列出所有本地分支$gitbranch#列出所有远程分支$gitbranch-r#新建一个分支,但仍停留在当前分支$gitbranch[branch-name]#新建一个分支,并切换到该分支$gitcheckout-b[branch]#新建一个分支,指向指定的commit$gitbranch[branch][commit]#新建一个分支,并与指定的远程分支建立跟踪关系$gitbranch--track[branch][remote-branch]#切换到指定分支并更新工作空间$gitcheckout[branch-name]#切换到上一个分支$gitcheckout-#建立现有分支和指定远程分支的跟踪关系$gitbranch--set-upstream[branch][remote-branch]#将指定分支合并到当前分支$gitmerge[branch]#选择一个commit合并到当前分支Branch$gitcherry-pick[commit]#删除分支$gitbranch-d[branch-name]#删除远程分支$gitpushorigin--delete[branch-name]$gitbranch-dr[remote/branch]#切换到一个branch$gitco#新建分支并切换$gitco-b#根据分支新建new_branch$gitco-b#查看某条历史提交记录,但是有是没有分支信息,切换到其他分支会自动删除$gitco$id#查看某个历史提交记录并创建分支$gitco$id-b#删除某个分支$gitbr-d#强制删除某个分支(删除未合并的分支时需要强制删除)$gitbr-D查看并更新当前工作kspace到索引标识的那个或者特定的工作空间#检出一个仓库,默认会更新到master分支$gitcheckout#检出到特定的分支$gitcheckoutbranchName#创建一个新的分支并切换到它,相当于"gitbranch;gitcheckout"$gitcheckout-bnewBranch远程同步remote同步remoteTerminalbranch#下载远程仓库的所有变化$gitfetch[remote]#显示所有远程仓库$gitremote-v#Display远程仓库信息$gitremoteshow[remote]#添加一个新的远程仓库并命名$gitremoteadd[shortname][url]#查看远程服务器地址和仓库名称$gitremote-v#添加远程仓库地址$gitremoteaddorigingit@github:xxx/xxx.git#设置远程仓库地址(用于修改远程仓库地址)$gitremoteset-urlorigingit@github.com:xxx/xxx.git#删除远程仓库$gitremoterm#上传本地指定分支到远程warehouse#把本地分支更新到远程origin的master分支#gitpush#gitpush相当于gitpushoriginmaster$gitpush[remote][branch]#强制将当前分支推送到远程仓库,即使有冲突$gitpush[remote]--force#将所有分支推送到远程仓库$gitpush[remote]--allundo#将暂存区的指定文件恢复到工作空间$gitcheckout[file]#将一个commit的指定文件恢复到暂存区和工作区$gitcheckout[commit][file]#将暂存区的所有文件恢复到工作区$gitcheckout.#重置暂存区的指定文件,一致最后一次提交,但工作区保持不变ged$gitreset[file]#重置暂存区和工作区,与上次commit一致$gitreset--hard#将当前分支指针重置为指定commit,同时重置暂存区,但工作区不变$gitreset[commit]#Reset将当前分支的HEAD设置为指定commit,同时重置暂存区和工作区,与指定commit一致$gitreset--hard[commit]#重置当前HEAD为指定的commit,但保持暂存区和工作区不变$gitreset--keep[commit]#新建commit撤销指定的commit#后面的所有改动都会被抵消前者并应用于当前分支$gitrevert[commit]#恢复上次提交的状态$gitrevertHEAD#暂时删除未提交的更改并将其移动到以后$gitstash$gitstashpop#列出所有存储$gitstashlist#恢复暂存内容$gitstashapply#删除暂存区a$gitstashdropcommit将当前索引的变化保存为一个新的commit,本次提交包含了用户所做的变化和信息#将暂存区提交到仓库区并附上提交信息$gitcommit-m[message]#prompt将暂存区的指定文件提交到仓库区$gitcommit[file1][file2]...-m[message]#提交工作区自上次commit后的变化,直接提交到仓库区$gitcommit-a#提交diff信息时显示全部$gitcommit-v#使用新的commit替换上次的commit#如果代码没有任何新的变化,则用于重写上次commit的commit信息$gitcommit--amend-m[message]#重做上次的Commit,并包含指定文件的新改动$gitcommit--amend[file1][file2]...diffshowsthedifferencebetweencurrentworkspaceandthesubmission#Displaythedifference工作目录和索引之间$gitdiff#显示索引和最新提交的不同$gitdiff--cached#显示工作目录和上次提交的不同$gitdiffHEADgrep可以快速找到存储库中的可选配置:#ThankstoTravisJeffery用于以下用法:#Displaylinenumbersinsearchresults$gitconfig--globalgrep.lineNumbertrue#搜索结果可读性更强$gitconfig--globalalias.g"grep--break--heading--line-number"#在所有java中查找variableName$gitgrep'variableName'--'*。java'#搜索包含“arrayListName”和“添加”或“删除”的所有行$gitgrep-e'arrayListName'--and\(-eadd-eremove\)logShowallsubmissionsofthisrepository#Showallsubmissions$gitlog#显示某些提交信息$gitlog-n10#仅显示merge提交$gitlog--merges#查看该文件的每次提交记录$gitlog#查看每次详细修改的diff$gitlog-p#查看最近两次详细修改的diff$gitlog-p-2#查看提交统计$gitlog--statmergeMerge是将外部提交合并到自己的分支中#将其他分支合并到当前分支中$gitmergebranchName#合并时创建一个新的合并合并后提交#DonotFast-Forwardmerge,这样可以生成合并提交$gitmerge--no-ffbranchNamemv重命名或移动文件#Rename$gitmvtest.jstest2.js#Move$gitmvtest.js./new/path/test.js#重命名文件,并将这个重命名放入暂存区$gitmv[file-original][file-renamed]#Forcerenameormove#这个文件已经存在,将被覆盖$gitmv-fmyFileexistingFiletag#ListAlltag$gittag#在当前commit中新建一个tag$gittag[tag]#在指定commit中新建一个tag$gittag[tag][commit]#删除本地tag$gittag-d[tag]#删除远程tag$gitpushorigin:refs/tags/[tagName]#查看标签信息$gitshow[tag]#提交指定标签$gitpush[remote][tag]#提交所有标签$gitpush[remote]--tags#新建分支,指向一个标签$gitcheckout-b[branch][tag]pull从远程仓库合并到当前分支#从远程origin的master分支更新仓库#gitpull$gitpulloriginmaster#Graballb远程仓库的ranches要更新合并到本地,不要快进合并gitci-am"somecomments"#修改最后一个A提交记录$gitci--amendrebase(谨慎使用)将一个分支上的所有提交历史应用到另一个分支上,不要在已经公开的远程分支上使用rebase。#ApplyexperimentBranchtomaster#gitrebase$gitrebasemasterexperimentBranchreset(谨慎使用)将当前头指针重置为特定状态这允许你撤销merge,pull,commits,add等。这是一个非常强大的命令,但是你在使用它的时候一定要知道后果work目录$gitreset#恢复暂存区到上次提交的状态,覆盖当前工作目录$gitreset--hard#恢复当前分支到某个提交,不改变当前工作目录#工作目录中的所有变化仍然exists$gitresetdha78as#将当前分支恢复到某个commit,覆盖当前工作目录#并删除所有未提交的更改和指定commit之后的所有commit$gitreset--harddha78asOther#生成压缩包发布$gitarchive#Patch$gitapply../sync.patch#测试补丁是否成功$gitapply--check../sync.patch#查看Git的版本$git--version