美文网首页GitGitGit使用
Git命令进阶(二)

Git命令进阶(二)

作者: 芒果味的你呀 | 来源:发表于2017-09-17 09:15 被阅读27次

    首先,学习git命令时时刻记得git下的三种文件状态,【已修改文件】---git add ---【已暂存文件】--- git commit---【已提交文件】

    $git reset --hard HEAD HEAD(泛指上一次提交)

    • 适用场景:文件已经在暂存区(执行过git add 操作),但没有提交(未执行git commit操作),想要修复未提交文件的错误。
    • 使用效果:文件状态变为未暂存,本地工作目录文件的内容也同时重置。
    • 补充说明:如果想要撤销暂存区的修改,但是还想保留工作区(本地目录)的内容,git reset HEAD test.txt命令可以达到效果,使文件变成未暂存,工作目录还在,假如你又后悔了,想要重置本地,那就用接下来这条命令:git checkout -- test.txt
    • git reset --hard HEAD~1 (回退上一次提交)

    $git checkout . 清除未add的本地所有修改 同样的还有git clean -df

    $git reset HEAD <file>

    • 适用场景:取消已暂存的文件:也就是取消已经通过git add . 添加到了暂存的文件,撤销暂存区的某个文件。
    • 使用结果:这样文件就又回到已修改未暂存的状态了。和上一个命令不同的是,这条命令本地工作目录还在,没有被重置。

    $git revert HEAD

    • 适用场景:已经执行git commit操作,即已经提交,但是后悔了,不想提交,
    • 使用效果:撤销了最近的一次提交
    • 补充:如果想要撤销上上次的提交 命令为git revert HEAD^
      在这种情况下,git尝试去撤消老的提交,然后留下完整的老提交前的版本. 如果你最近的修改和要撤消的修改有重叠(overlap),那么就会被要求手工解决冲突(conflicts), 就像解决合并(merge)时出现的冲突一样.

    $git checkout -- file

    • 适用场景:未暂存的文件,即在本地目录,此时文件杂乱,想要恢复成上次提交的代码。
    • 使用效果:本地代码重置

    $git commit --amend

    • 适用场景:假如刚刚做了一个commit,但是-m‘’里做的提交说明感觉不太满意,想要修改提交的说明;或是刚刚做了一个提交,但是发现本地还有文件忘记git add,你本想的是这个文件应该在刚才的提交内容里,可以现在忘记提了,此时可以git add file ,然后再执行这个命令。
    • 使用效果:能让我们在代码发布前,添加一些新的文件或是修改你的提交注释(commit message).

    $git rebase

    • 适用场景:在origin分支外假如新建了一个分支mywork,此刻在新的分支上有两个新的提交,而主分支也有两个新的提交,这就意味着"origin"和"mywork"这两个分支各自"前进"了,它们之间"分叉"了。这个时候若想和origin分支合并有两种方式:
      • 切换到origin分支git pull 拉取远程分支,然后和mywork分支合并git merge。结果看起来就像一个新的"合并的提交"。这种操作的结果如图图片1:
      • 为了让"mywork"分支历史看起来像没有经过任何合并一样,可以在mywork分支上,执行git rebase origin操作这些命令会把你的"mywork"分支里的每个提交(commit)取消掉,并且把它们临时 保存为补丁(patch)(这些补丁放到".git/rebase"目录中),然后把"mywork"分支更新 到最新的"origin"分支,最后把保存的这些补丁应用到"mywork"分支上。这种操作的结果如图图片2:


        图片 1.png
    图片 2.png
    • 使用效果:"mywork"分支历史看起来像没有经过任何合并。
    • 补充说明:遇到冲突后处理完,git add ,然后git rebase --continue
      如果想让分支回到rebase开始前的状态,可以随时执行git rebase --abort

    $git rebase 交互式rebase

    • 适用场景:在老提交(older commit)里发现一个错误, 但是现在还没有发布到代码服务器上. 此时可以使用交互式rebase。
    • 补充说明:一旦使用git rebase -i xxx(<commit id>)你所预设的编辑器会被调用,其中含有如下的内容:


      图片 3.png

    $git cherry-pick <commit id>

    • 适用场景:把已经提交的分支从一个分支放到另一个分支
    • 使用效果:可以在新分支上选择的合并之前的特点,十分常用。
      说明:处理过程中也会遇到冲突,像正常处理冲突那样处理就好。

    Git 命令初级了解

    Git命令进阶(一)

    Git命令进阶(二)

    相关文章

      网友评论

        本文标题:Git命令进阶(二)

        本文链接:https://www.haomeiwen.com/subject/xatysxtx.html