我承诺并将他们推给Git。 我的同事们做出了改变。 我承诺更多的改变。
我被告知我的更改无法进行测试 此版本必须在下一个版本中发布。我必须退出所有的更改,只有我的更改。我怎么能这样做?
在推动或推动我的变化进入Git时,我会使用乌龟。我正在使用Windows XP机器。
是的,在推动我的提交之前,我拉了我的同事工作。
我不得不提一下,我的更改是针对完全不同的文件。我的同事都没有触及他们。
它只是一个分支,它是集成分支。
答案 0 :(得分:2)
为什么不使用git revert
命令?
答案 1 :(得分:0)
让我们说初始集成的Repo是我,当你的提交是Y,之后你的同事提交是C.所以可能是开发线看起来像这样。目前文件系统为F.
(F)
I--Y--C1--C2
↑
HEAD
正如你提到的那样
我不得不提一下,我的变化完全不同 文件。我的同事都没有触及他们。
所以你可以继续重置HEAD~1直到你到达我,你之前的提交做了任何改变。假设提交后有两个提交。你可以使用它来达到提交我。
git reset HEAD~3
由于您的文件被保留,这可能看起来像
(F)
I--Y--C1--C2
↑
HEAD
现在你可以从系统中删除你的文件并添加你的同事的文件(到索引,它已经存在于FileSystem上),然后进行提交。现在开发线可能看起来没有你的改变。
(F1)
I--C3
↑
HEAD
这不是推荐的方法。建议的方法是使用
git revert HEAD^
虽然我从来没有使用它,所以不能告诉你。
编辑:另一种方式。
找到提交“Y”的“SHA KEY”并在“I”之前提交。
可以使用
git log
让我们说Y键是:7a2ab465aad23dc66a23ade897deb65a5bf9419d
而对于我的关键是:906488ac2d5a8468d725351df80e3b0f6338c9be
为两个提交制作标签,如
git tag Intercommit -a 906488ac2d5a8468d725351df80e3b0f6338c9be
git tag YourCommit -a 7a2ab465aad23dc66a23ade897deb65a5bf9419d
使用
结帐联运git checkout Intercommit
然后使用
重新定位回购git rebase --onto HEAD YourCommit master
现在dev的行看起来像
I--C1--C2
↑
HEAD
您可以在
上找到有关变基和重写一次提交的更多信息http://www.kernel.org/pub/software/scm/git/docs/v1.7.3/user-manual.html#rewriting-one-commit
和