如何撤消应用于一段时间内发生的文件的部分更改.我有以下提交,A并且B'file.txt' 之间发生了意外更改
...--A--B--...
Run Code Online (Sandbox Code Playgroud)
我有一个文件的差异补丁,file.txt-B-A.patch其中恢复所有更改.不过,我只是想撤销某些变化中file.txt,很像一个合并冲突手工采摘的变化.有没有办法在不修改补丁文件的情况下这样做?
还有另一种方法可以完全不需要补丁文件.
发生问题从去A到B,所以先恢复在变化B,但是不要自动提交.
$ git revert --no-commit <commit hash of B>
Run Code Online (Sandbox Code Playgroud)
git revert可以做的改变是分阶段进行的.取消他们.
$ git reset HEAD
Run Code Online (Sandbox Code Playgroud)
接下来,交互式地浏览file.txt并仅进行您想要保留的更改.
$ git add --patch file.txt
Run Code Online (Sandbox Code Playgroud)
现在只会暂存您选择的还原.提交他们.
$ git commit
Run Code Online (Sandbox Code Playgroud)
最后,清理未上市的剩菜git revert.
$ git reset --hard
Run Code Online (Sandbox Code Playgroud)
许多git命令都有-p选项("patch")或-i("interactive")来部分执行某些操作.对于任意差异我不认为这是支持的,但您可以应用补丁,然后使用git checkout -p -- <path(s)>,例如,git checkout -p -- .如果您处于回购的顶层,有选择地撤消未分阶段的更改.
| 归档时间: |
|
| 查看次数: |
3206 次 |
| 最近记录: |