我有一个开发分支(例如,在提交c处),它比master的许多提交(例如在提交a处)。但是我忘了将生产代码(例如在提交b处)推入master或单独的分支。
是否有可能将我的生产代码(即develop分支中的较早提交)推送/合并到master中?
a (master branch)
a b c (develop branch)
(Need this commit
merged to master)
编辑:我不希望将开发中的所有提交合并/推送到母版,这很容易。我只希望将先前提交(而不是最后一次提交)的代码合并到master。我在测试服务器中有此代码。
您不能在不更改a
的情况下在c
和c
之间插入提交。由于您已经按下c
,因此有人可以使用它来开始工作,我的建议是避免在两者之间重新设置b
。
话虽这么说,您最好的选择可能是将b
推到一个新分支,然后将git merge c
推到b,这样您现在有了以下内容,然后合并到master。
d <-- merge devel into new branch
/|
| b <-- new branch
| |
c | <-- develop HEAD
| /
a <-- master HEAD
一旦您在这里,请合并到master上,或者回到开发上。这很丑陋,但避免破坏任何人的工作。
您的问题的解决方案是将直到提交b的所有内容合并到master中。
根据您的情况,以下命令应针对您要执行的操作:
git checkout develop
git rebase master # Always suggested to avoid unneeded merge c onflicts
git checkout master
git merge <commit-id of b>
下面的小脚本允许您创建一种沙盒,以在这种情况下玩一些游戏
mkdir sandbox
cd sandbox
git init
touch a.txt
git add a.txt
git commit -m "Added a.txt" a.txt
git checkout -b develop
touch b.txt
git add b.txt
git commit -m "Added b.txt" b.txt
touch c.txt
git add c.txt
git commit -m "Added c.txt" c.txt
git rebase master
git checkout master