设为首页 收藏本站
查看: 846|回复: 0

[经验分享] git 使用笔记(二)

[复制链接]

尚未签到

发表于 2018-1-15 23:13:58 | 显示全部楼层 |阅读模式
撤消操作
  在最近使用 git 的过程中,有时候遇到这样的一个问题:习惯性的 "add -A",这会将所有的修改都添加到暂存区,可是有两个文件的修改暂时不想添加的呀,这该怎么办?git 提供了一些撤销操作的方法。比如:

取消已经暂存的修改
  就像前面说的,习惯性的 "add -A" 将暂时不想添加的修改添加到了暂存区。而取消已经暂存的修改的方法,git 已经在你每次使用 git status 查看文件状态的时候给出了解决方案,
  

➜  hexo-theme git:(master) ✗ git status  
On branch master
  
Your branch is ahead of 'origin/master' by 2 commits.
  (use "git push" to publish your local commits)
  

  
Changes to be committed:
  (use &quot;git reset HEAD <file>...&quot; to unstage)
  

  modified:   processing/README.md
  modified:   processing/layout/_partial/navigation.jade
  modified:   processing/layout/_widget/archive.jade
  modified:   processing/layout/_widget/categories.jade
  modified:   processing/source/css/_base/base.scss
  modified:   processing/source/css/_base/variables.scss
  modified:   processing/source/css/_partial/navigation.scss
  modified:   processing/source/css/style.scss
  

  可以使用 git reset HEAD ... 的方式取消暂存。
  

➜  hexo-theme git:(master) ✗ git reset HEAD *  
Unstaged changes after reset:
  
M   processing/README.md
  
M   processing/layout/_partial/navigation.jade
  
M   processing/layout/_widget/archive.jade
  
M   processing/layout/_widget/categories.jade
  
M   processing/source/css/_base/base.scss
  
M   processing/source/css/_base/variables.scss
  
M   processing/source/css/_partial/navigation.scss
  
M   processing/source/css/style.scss
  

  这时再使用 git status 查看文件状态可以看到
  

➜  hexo-theme git:(master) ✗ git status  
On branch master
  
Your branch is ahead of 'origin/master' by 2 commits.
  (use &quot;git push&quot; to publish your local commits)
  

  
Changes not staged for commit:
  (use &quot;git add <file>...&quot; to update what will be committed)
  (use &quot;git checkout -- <file>...&quot; to discard changes in working directory)
  

  modified:   processing/README.md
  modified:   processing/layout/_partial/navigation.jade
  modified:   processing/layout/_widget/archive.jade
  modified:   processing/layout/_widget/categories.jade
  modified:   processing/source/css/_base/base.scss
  modified:   processing/source/css/_base/variables.scss
  modified:   processing/source/css/_partial/navigation.scss
  modified:   processing/source/css/style.scss
  

  
no changes added to commit (use &quot;git add&quot; and/or &quot;git commit -a&quot;)
  

  可以看到,现在所有的修改都没有被暂存。

取消对文件的修改
  有一次,我正修复一个bug,修改本地仓库的一个文件,还没有完成时,同伴告诉我他已经修改好了,并且已经提交到远程了。我停下手头的工作,准备 pull ,这时候意识到,如果直接 pull,merge 的时候必然会冲突,因为我和同事同时修改了同一个文件的差不多相同的地方。但是我自己修改了文件很多地方,一味的 CTRL+Z 也难以解决问题,此时我需要将我修改的文件返回到修改之前的状态。很凑巧的是,在执行 git status 时,同样也给出了具体的撤销方法。
  

➜  hexo-theme git:(master) git status  
On branch master
  
Your branch is up-to-date with 'origin/master'.
  

  
Changes not staged for commit:
  (use &quot;git add <file>...&quot; to update what will be committed)
  (use &quot;git checkout -- <file>...&quot; to discard changes in working directory)
  

  modified:   processing/layout/_widget/archive.jade
  modified:   processing/layout/_widget/categories.jade
  modified:   processing/layout/_widget/tags.jade
  modified:   processing/layout/layout.jade
  modified:   processing/source/css/_base/base.scss
  

  
no changes added to commit (use &quot;git add&quot; and/or &quot;git commit -a&quot;)
  

  使用 git checkout -- <filename> 来取消工作目录中的修改。
  

➜  hexo-theme git:(master) ✗ git checkout -- *  
➜  hexo-theme git:(master) git status
  
On branch master
  
Your branch is up-to-date with 'origin/master'.
  

  
nothing to commit, working directory clean
  

  效果显而易见!!这条命令有些危险,所有对文件的修改都没有了。如果一个不小心将自己需要的修改 discard 了,那就只有哭了……

修改最后一次的提交
  有时候在提交时,发现自己漏掉或者多选了几个文件,亦或者提交信息写错了,想要撤销刚才的提交操作,可以使用 --amend 这个选项,重新提交
  

➜  hexo-theme git:(master) ✗ git add -A  
➜  hexo-theme git:(master) ✗ git commit -m &quot;commit wrong&quot;
  
[master ebcbab2] commit wrong
  4 files changed, 78 insertions(+), 106 deletions(-)
  rewrite processing/source/css/_base/base.scss (64%)
  

  发现自己提交了一个 &quot;commit wrong&quot; 的错误提交信息,也不用太紧张,输入指令
  

git commit --amend   

  之后,会跳转到命令行中的 vim 中,提示你修改提交信息。只要没有推送到远程端,一切都好说~

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-435522-1-1.html 上篇帖子: git fetch, merge, pull, push需要注意的地方 下篇帖子: autrolValar Morghulis, Valar Dohaeris.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表