我在branch1
,我为branch1
做了几次提交。完成我的任务(并将这些提交推送到远程)。我使用以下命令从branch2
切换到branch1
git checkout -b branch2
我打算从master
创建它,但我错误地从branch1
我在branch2
中做了一些更改,然后通过命令git push origin branch2
提交/推送到远程。现在,当我查看远程仓库时,我会看到branch1
历史记录中的所有branch2
次提交。
请记住,这是我第一次提交branch2
,所以我真的不关心所有早期的提交。
P.S
更多背景如何与分支相关联。
我有一些代码在master
分支(我们决定废弃)。现在,我创建了一个新的分支branch1
> git status
> on branch master
> git checkout -b branch1
具有项目的基本脚手架。该分支(一旦批准)将合并(在这种情况下是覆盖)master
分支。 branch2
在顶部添加了db层。理论上它会被添加到branch1
之上,但当我这样做时,我看到branch2
拥有我在branch1
中提交的所有提交,这让我想到当我们合并时branch1
1}}到master
,然后branch2
不会导致双重提交历史记录?这就是我想删除之前提交的原因(从branch1
借用branch2
)。
答案 0 :(得分:1)
当你这样做时:
git checkout -b branch2
您在branch2
之上创建了branch1
。这意味着branch1
中的所有提交都将在那里,您对branch2
的新提交将添加到此之上。在不知道branch1
和master
之间的确切关系的情况下,后者是您真正打算创建分支的最佳方法,纠正这种情况的最安全的方法可能是从{来挑选新的提交{1}}到从branch2
创建的分支上:
master
现在,您的提交位于正确的分支之上。您现在可以通过以下方式删除git checkout branch2
git log
# observe and record the SHA-1 hashes of the commits you made
git checkout master
git checkout -b new_branch2
# now cherry-pick the commits from branch2 which you want to keep
git cherry-pick 2hie87jm8 # first commit
git cherry-pick j2cnd82ld # second commit
# and so on for all commits, in the order you made them
:
branch2