目前,我的git树看起来像这样
master
^
|
Commit 3
^
|
Commit 2
^
|
Commit 1
^
|
remote/origin/master
我想要做的是,从提交2和3中删除它们从未存在的更改,然后推送更改。我隐藏了一些未提交的更改(它们主要是配置文件和makeFiles,因此我不想让它们存在于树中)。另外,我想知道最好的流程是什么,这样我就不会像现在这样弄乱我的工作目录。请帮忙
GIT中-新手,
感谢。
答案 0 :(得分:2)
rebase
是你的朋友。 rebase
命令提供交互式模式,您可以在其中决定如何为指定提交范围内的每个提交执行操作。
最简单的方法就是在远程rebase
分支上master
。
git rebase -i origin/master master
你告诉git {@ 1}}它的远程对应的主分支。没有rebase
标志(交互式),这将有效地做任何事情。
现在你的配置编辑器应该打开,你应该看到这样的东西:
-i
现在要删除提交,您只需从文件中删除相应的行。所以看起来应该是这样的:
pick abcdefg Commit 1
pick hijklmn Commit 2
pick opqrstu Commit 3
(... maybe more commits)
# Here will be comments which explain what's going on ...
现在关闭编辑器,git将pick abcdefg Commit 1
(... maybe more commits)
# Comments can stay ...
rebase
分支顶部指定的提交。
您可以从GitPro书籍或Changing History Chapter中的rebase documentation了解有关互动式变基的更多信息。
希望有所帮助!