Git 高级命令学习记录 (一)

重写commit历史


将提交应用到最后一次commit中

git commit --amend -m "更新说明" [ 有时候做了一个小的更改,不想单独弄出来一个commit,那就可以使用此命令,直接将当前这一次commit与上一次commit合并生成一个新的commit ]

整理本地的commit(未push的commit)

git rebase -i HEAD~3 [其中 -i 表示启用交互模式,~3 表示最近的三次commit ]

运行过上述命令之后会出现如下所示的内容,要保证第一个是pick,即采用这一次commit的内容,最终会把这三次的合并成一个commit,包含三次提交的所有内容,详细介绍请参照官网,或者阅读下方的说明,这里仅做一次命令的记录,
pick表示使用本次commit,squash或者s表示不使用本次提交

   pick f7f3f6d changed my name a bit
   pick 310154e updated README formatting and added blame
   pick a5f4a0d added cat-file

   # Rebase 710f0f8..a5f4a0d onto 710f0f8
   #
   # Commands:
   #  p, pick = use commit
   #  r, reword = use commit, but edit the commit message
   #  e, edit = use commit, but stop for amending
   #  s, squash = use commit, but meld into previous commit
   #  f, fixup = like "squash", but discard this commit's log message
   #  x, exec = run command (the rest of the line) using shell
   #
   # These lines can be re-ordered; they are executed from top to bottom.
   #
   # If you remove a line here THAT COMMIT WILL BE LOST.
   #
   # However, if you remove everything, the rebase will be aborted.
   #
   # Note that empty commits are commented out

经过整理之后,保存并推出编辑模式,会弹出合并后的提示信息,再保存推出,就会将所有的commit合并成一个或多个commit,可以通过 git log 查看整理后的commit

注:如果这些commit已经push到服务器中,则强烈建议不要手贱,除非不怕被队友打死。

调试功能


git bisect start [开始进行调试]

git bisect bad [告诉git当前commit是bad,即出问题的commit]

git bisect good [commitid] [在告诉git哪一个commit是good,即在哪一个commit上代码是正常的,然后git就会在当前的commit和good commit之间进行二分查找,git会根据二分查找法先切换到一个commit-a上,本地进行调试验证,并将验证结果告诉git,即git bisect good/bad,告诉git当前的commit-a是好的或者坏的,标记完之后,git会继续根据二分查找法切换到另一个commit上,依次类推,最终git会找出第一次出现错误的commit,然后我们就可以定位出现问题的commit,并进行相应的错误检查]

git bisect reset [调试完毕之后,在执行一遍此命令,会将你带回到正常的状态,否则会停留在一个奇怪的分支中]

GIT远程分支


git push origin [本地分支名称]:[远程分支名称] [将本地的指定分支推送到远程仓库origin上作为远程分支,如果远程分支已存在则会自动合并,如果不存在,则会在远程创建一个远程分支]

git pull origin [远程分支]:[本地分支] [将远程仓库中指定分支的内容拉取到本地的指定分支上]

git push origin --delete [远程分支] [删除指定的远程分支]

git checkout --track origin/serverfix [以指定的远程分支为基础在本地创建一个与远程分支同名的分支]

git checkout -b sf origin/serverfix [以指定的远程分支为基础在本地创建一个分支(可以自己指定一个与远程分支不同的名称)]

git branch -u origin/serverfix [将当前分支与指定分支建立追踪关系]

你可能感兴趣的:(Git 高级命令学习记录 (一))