git 中如何撤销部分修改?

以提问中修改了两个文件a、b为例,假设需要撤销文件a的修改,则修改后的两个文件:1、如果没有被git add到索引区git checkout a 便可撤销对文件a的修改2、如果被git add到索引区,但没有做git commit提交1)使用git reset将a从索引区移除(但会保留在工作区)git reset HEAD a2)撤销工作区中文件a的修改git checkout a 3、如果已被提交,则需要先回退当前提交到工作区,然后撤销文件a的修改1)回退当前提交到工作区git reset HEAD^2)撤销工作区中文件a的修改git checkout a 补充:灵活使用以上操作的关键在于理解git中工作区、索引区的概念和git reset命令hard、mixed(default)、soft三种模式的区别,网上有很多这方面的文章,不再赘述。

for index – Unstaging a Staged File / undo a added file
$ git reset HEAD benchmarks.rb
for Working directory – Unmodifying a Modified File
git checkout – benchmarks.rb
Or revert deleted folders
git checkout – /root/vdi/vdia/third_party/ClientPlatform/src/

Git常用的撤销操作 之前的总结 希望可以帮到你


基本状态标识

  • A- = untracked 未跟踪
  • A = tracked 已跟踪未修改
  • A+ = modified - 已修改未暂存
  • B = staged - 已暂存未提交
  • C = committed - 已提交未PUSH

各状态之间变化

  • A- -> B : git add <FILE>
  • B -> A- : git rm --cached <FILE>
  • B -> 删除不保留文件 : git rm -f <FILE>
  • A -> A- : git rm --cached <FILE>
  • A -> A+ : 修改文件
  • A+ -> A : git checkout -- <FILE>
  • A+ -> B : git add <FILE>
  • B -> A+ : git reset HEAD <FILE>
  • B -> C : git commit
  • C -> B : git reset --soft HEAD^
  • 修改最后一次提交:git commit --amend
对于日常开发中,代码版本管理是必不可少,如何管理各种状态,下面的几个点介绍下

1.首页了解下git所处的4种区 (工作区, 暂存取,本地仓库, 远程仓库)



  • git add . (git add <file>) :加入到暂存区
  • git commit -m "add: xxx" : 加入到本地仓库
  • git push origin master : 加入到远程仓库

2. git的5种状态

  • Origin(未修改)
  • Modified(已修改)
  • Staged(已暂存)
  • Committed(已提交)
  • Pushed(已推送)

3. git diff 对比修改

  • 已修改,未暂存:git diff
  • 已暂存,未提交: git diff --cached
  • 已提交,未推送: git diff master origin/master

4. 撤销修改(观看上面的图)

  • 已修改,未暂存:git checkout . (git checkout <file>)
  • 已暂存,未提交: git reset (git reset --hard 会覆盖)
  • 已提交,未推送: git reset --hard origin/master (远程仓库覆盖本地仓库)
  • 已推送: git reset --hard <commitID> (如果要覆盖远程必须强制推 git push -f)


#怎么修改远程的commit message? :《修改Git message》


来源:秒懂Git的区和状态

转自:https://www.zhihu.com/question/20039839

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值