Lak*_*sad 743 git version-control git-revert git-reset
撤消特定提交的最简单方法是:
因为如果它不是最新的提交,
git reset HEAD
Run Code Online (Sandbox Code Playgroud)
不起作用.而且因为它被推到了遥远的地方,
git rebase -i
Run Code Online (Sandbox Code Playgroud)
和
git rebase --onto
Run Code Online (Sandbox Code Playgroud)
将导致遥控器出现一些问题.
更重要的是,我不想真正修改历史.如果有错误的代码,它就在历史中可以看到.我只想在工作副本中使用它,我不介意反向合并提交.
换句话说,以下svn命令的Git等价物是什么:
svn merge -r 303:295 http://svn.example.com/repos/calc/trunk
Run Code Online (Sandbox Code Playgroud)
通过反向合并这些修订中的所有更改,将所有更改从295移除到302,作为新提交.
svn merge -c -302 ^/trunk
Run Code Online (Sandbox Code Playgroud)
当然,通过添加另一个反向合并来自相应提交的更改的提交来撤消302提交.
我认为它应该是一个相当简单的Git操作和一个相当常见的用例.原子提交还有什么意义?
我们已经举办藏起来,并要保证的提交是完全原子,你不应该能够很容易地撤销这些原子提交的一个或多个?
And*_*ett 1142
确定提交的哈希值git log
,然后使用git revert <commit>
创建一个删除这些更改的新提交.在某种程度上,git revert
是相反的git cherry-pick
- 后者将补丁应用于缺少它的分支,前者将其从具有它的分支中移除.
Tha*_*you 354
我不喜欢自动提交git revert
,所以这可能对某些人有帮助.
如果您只想要修改的文件而不是自动提交,则可以使用--no-commit
% git revert --no-commit <commit hash>
Run Code Online (Sandbox Code Playgroud)
这是和 -n
% git revert -n <commit hash>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
308767 次 |
最近记录: |