我和一位朋友在一个项目上合作,他编辑了一堆本不应该编辑过的文件.不知怎的,我将他的作品合并到了我的作品中,或者当我拉动它时,或者当我试图选择我想要的特定文件时.我一直在寻找和玩很长一段时间,试图弄清楚如何删除包含对这些文件的编辑的提交,它似乎是revert和rebase之间的折腾,并没有简单的例子,并且docs假设我比我知道的更多.
所以这是问题的简化版本:
鉴于以下情况,如何删除提交2?
$ mkdir git_revert_test && cd git_revert_test
$ git init
Initialized empty Git repository in /Users/josh/deleteme/git_revert_test/.git/
$ echo "line 1" > myfile
$ git add -A
$ git commit -m "commit 1"
[master (root-commit) 8230fa3] commit 1
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 myfile
$ echo "line 2" >> myfile
$ git commit -am "commit 2"
[master 342f9bb] commit 2
1 files changed, 1 insertions(+), 0 deletions(-)
$ echo "line 3" >> myfile
$ …Run Code Online (Sandbox Code Playgroud) 我想从线性提交树中删除选定的提交日志条目,以便条目不会显示在提交日志中.
我的提交树看起来像:
R--A--B--C--D--E--HEAD
Run Code Online (Sandbox Code Playgroud)
我想删除B和C条目,以便它们不会在提交日志中显示,但应保留从A到D的更改.也许通过引入一个提交,使B和C成为BC并且树看起来像.
R--A--BC--D--E--HEAD
Run Code Online (Sandbox Code Playgroud)
或者,理想情况下,A直接来自D.D'表示从A到B,B到C和C到D的变化.
R--A--D'--E--HEAD
Run Code Online (Sandbox Code Playgroud)
这可能吗?如果有,怎么样?
这是一个相当新的项目,因此目前没有分支,因此也没有合并.
如何git revert使用?
这可能听起来像一个重复的问题,但是当人们问它时,响应通常git reset是按照Reit对Git中的SHA哈希的提交使用?
然后当有人询问如何使用git reset人们回复说你应该git revert按照Git使用- 如何回滚
在你知道它之前,有8个不同的人出现了他们自己独特的方法来保存OP的屁股,所有这些都是你的头脑.
因此,让我们试着坚持简介并写一个假人指南git revert.
一个场景:你已经承诺了两次掌握和坏.你已经推动了,其他人也做了不好的改变.
你想撤消它.这不是你自己可以在代码中手动撤销的东西,比如一些巫师或包管理器改变了大量的东西 - 你只想把它全部放回去.
这就是源控制的全部内容.我很确定这很简单.
好的,你打算用,git revert但怎么样?
跑完之后git revert你还得做点什么吗?您是否必须提交已恢复的更改或确实还原直接提交到repo或什么?
显然你需要再次推进并且可能会向球队宣布你的球.