我已经对我的提交做了一些更改并完成了我的工作副本,之后我也做了git push
。
但是,我突然发现我的修改过的文件已经被推到了bitbucket repo上。因此,在没有撤消的情况下,我第一次手动将我的文件更改为默认值。这是工作流程。
C1
README.md:
“This is the content of the first readme on README.md
”
git add README.md
git commit -m 'initialize README.md'
git push -u origin master
C2
之后,我将文件更新为:
The content is new on README.md
C3
我突然做了一些这样的改变:
This is the content of the first readme on README.md
add a few new lines
add a few new lines
git add README.md
我无法对此状态进行提交,否则我将失去 C2 更改。在这种情况下,我想git push
我的 C3 ,在我继续工作副本之前,我想合并 C2 和 C3 ,但只有“改变”。所以,在这种情况下,就像这些:
The content is new on README.md
add a few new lines
add a few new lines
我为什么这样做的问题,因为我在修改“第一行”之前忘了先在add a few lines
上工作。
我认为git revert
不会做魔术。
非常感谢您的关注! :)
编辑:git cherry-pick
也会覆盖本地更改T ___ T
答案 0 :(得分:1)
你们如何改变:
第1步:$git rebase -i HEAD^^^
这将带您进入默认编辑器,其中将列出您的最后两次提交,并将其交换。
在rebase期间,你的C3提交将成为你的第二个提交C2',C2将成为C3'。
在Rebase 2/2解决冲突之后,这些将是你的提交吗?
C1
README.md:
This is the content of the first readme on README.md
C2'
README.md:
This is the content of the first readme on README.md
add a few new lines
add a few new lines
C3'
README.md
The content is new on README.md
add a few new lines
add a few new lines
现在你必须强行推进你的上游。
$git push -f -u origin master
注意:它会覆盖您的更改,您必须告诉已经从您那里获取的其他人进行强制拉取或获取并合并/变基。
希望这能回答你的问题!