美文网首页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 进阶

    GIT 进阶 命令:

  • Git命令进阶(二)

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

  • git命令进阶

    导出某次提交修改过的文件 把代码增量修改的部分打包

  • Git 进阶命令

    之前写的 Git基本操作命令 众所周知, Git目前已经是分布式版本控制领域的翘楚,围绕着Git形成了了一个完整的...

  • Git 进阶命令

    改动添加到暂存器 读出暂存器内容 创建分支 删除分支 删除远程分支 切换分支 合并分支 添加 tag 删除本地 t...

  • Git流程

    一、熟悉Git命令 二、Git命令详谈

  • Git命令进阶(一)

    $ git status 适用场景:查看当前项目下所有文的状态,如果第一次,你会发现都红颜色的,因为它还没有交给g...

  • git简易教程(基本概念+常用命令)

    目录一、工具二、概念三、常用linux命令四、git子命令 一、工具 1、git bashhttps://git-...

  • git 学习(2) ---- git 命令进阶

    git 分支命令 git 分支可以理解为代码的平行世界,你可以在任意一个平行世界里开发代码,其他的平行世界不受影响...

  • iOS 开发 之 Git的基本使用(命令篇)

    一、Git的使用 二、Git常用命令

网友评论

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

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