gitrm该命令用于删除文件。与手动删除不同的是,该命令会暂存删除??的文件,相当于手动删除?gitaddgitrm删除文件gitrm-f删除缓存文件(必填)gitrm--cached从缓存中删除文件gitrm-rdeletedirectorygitaddgitadd[file1][file2]...命令将文件添加到暂存区。gitadd[dir]添加指定目录到暂存区,包括子目录gitadd。将当前目录下的所有文件添加到暂存区gitresetgitreset命令用于回退版本,可以指定返回指定提交的版本,并删除该版本之后的所有commit。例子:提交记录a->b->c->d,执行gitresetb后变成a->bgitreset[--soft|--混合|--hard][HEAD]--mixed默认参数,保留已有的工作区修改,恢复之前的提交到工作区--soft保留已有的工作区修改,恢复之前的提交到暂存区--hard删除现有作品要更改,删除之前所有作品提交内容(慎用)[HEAD]为版本号,或者使用head、head^、head~。https://segmentfault.com/a/11...gitreset[HEAD]回滚文件gitrevertgitrevert命令用于撤销一次提交的更改,并生成一条新的提交记录。例子:当前提交记录a->b->c->d,执行gitresetb后,变成a->b->c->d->revertb执行gitresethead后,变成a->b->c->d->revertd远程回滚清除本地更改gitresethead--hardremoterollbackgitreset[HEAD]--hard&&gitpush--forcegitrevert[HEAD]&&gitpushgitdiff[][][--][...]gitdiff如果文件在工作区发生变化,比较工作区和上次提交之间的变化。如果文件已经被暂存(add),工作区有变化,比较工作区和暂存区的变化。gitdiff--cached查看暂存区与上次提交的变化gitdiffhead比较工作区和暂存区与上次提交的所有变化gitdiffbranch1branch2比较分支gitdiffcommit1commit2比较并提交以上命令可以加比较具体的文件gitloggitlogfilename查看filename文件的commit记录gitlog-pfilename查看每次提交的diffgitlog-2显示最近两次提交gitlog-p[commitid]显示提交的具体差异gitlog--statshowbriefdifferencesofcommitsgitlog--onlineshowonlyonelinegitlog--graphshowbranchgraphgitlog--grep"msg"filtergitlog--graph--pretty=oneline--abbrev-commitgitrebaserebase使用场景:远程分支有新提交,本地分支也有提交。需要更新本地分支而不生成合并提交。使用gitpull-r/gitpull--rebasemaster分支master,开发分支dev。gitpullorgin/master&&gitcheckoutdev&&gitrebasemaster在主分支上谨慎使用rebase--interactive/-imerge,add,modify,movecommit--bortcancelrebase--continuecontinuerebasegitcherry-pickgitcherry-pickcommit1将commit1合并到当前分支,并生成新的commitId。gitcherry-pickcommit1commit2合并多个commitgitcherry-pickdev合并dev的最新提交gitcherry-pick--continuegitcherry-pick--abortgitcommit--amend修改最新的提交,生成新的commitIdhead^&&head~(我的自己通俗的理解,有误请指正)^代表分支,根据形状可以理解为叉子。head^0代表当前提交,head^1代表第一个fork,head^2代表第二个fork,依此类推。数字1可以省略,所以head^===head^1,head^^(在两个岔路口都选择第一条路)==head^1^1===head^1^===head^^1.~代表当前叉路的最后一次提交,head~0为当前提交,head~1或head~最后一次提交,head~~或head~2为最后一次提交,以此类推。数字1可以省略,所以head~1===head~。查看提交图:gitlog--graph--pretty=oneline--abbrev-commit*b21d2e9(HEAD->master)Mergebranch'dev2'|\|*1ef9e78(dev2)dev2第二次提交*|a7430f0(dev)dev第二次提交|/*1c1f2e4dev2第一次提交*7f442c0dev第一次提交*04ceccc第三次提交*5eb938f第二次提交*c188500第一次提交head==head^0==head~0==head当前提交b21d2e9head^==head~==head^1==head~a7430f0head^^==head^1^1==head~2==head~~1c1f2e4head^21ef9e78(选择第二个fork)head^2^===head^2~1c1f2e4head^3未知版本或路径不在工作树中没有第三个分支