我的仓库在GitHub上。我正在mybranch
上开发过master
,不久前,它们都进行了新的提交
git checkout master
git checkout -b mybranch
...
git add ...
git commit
git push origin mybranch
====>
[master] -------commit0--
[mybranch] \--commit1--
这时,我将commit1
推送到GitHub。
我想检查commit1
在新的master
下是否仍然可以工作,所以我做了rebase
(commit0
和commit1
没有冲突)。据我了解,它现在看起来像:
git fetch --all
git checkout master
git rebase origin/master
git checkout mybranch
git rebase origin/master
======>
[master] -------commit0--------------
[mybranch] \--commit1--
一切正常,我取得了新的进展commit2
。
git checkout mybranch
...
git add ...
git commit
git push origin mybranch
=====>
[master] -------commit0--------------------------
[mybranch] \--commit1-----commit2--
我将更改推送到GitHub并准备进行拉取请求。但是,我现在在GitHub上看到有3个提交:
new to old:
- commit2
- commit0
- commit1
这很烦人,因为commit0
已经是master的一部分,与mybranch
无关。 commit0
中的文件更改也显示在我的请求请求中,这是不可取的。所以我做了“自然” 事情:revert commit0
中的mybranch
。
git checkout mybranch
git revert [commit0]
git push origin mybranch
现在,拉取请求看起来更好:它仅具有commit1
和commit2
的更改。
但是,在我的本地仓库中,由于我revert
编辑了commit0
,所以我在mybranch
上没有内容。 git log
显示:
new to old:
- revertcommit0 (HEAD -> mybranch)
- commit2
- commit1
- commit0 (origin/master, origin/HEAD, master)
...
此时:
master
上进行最新的mybranch
提交,并且仅将相关更改推送到mybranch
。这个要求太多了吗?merge
也许是更好的做法吗?