我的目标很容易解释,但是我找不到任何方法可以做到这一点。假设我有3个分支。A,B和C
A -------.
\--------.----------- B
\
.-------------- C
Run Code Online (Sandbox Code Playgroud)
我只是想将整个分支“ C”推送到分支“ B”。让我解释一下:我不想保留从B创建C之后在B中所做的任何事情。我只是希望B具有与分支C完全相同的代码。
我如何安全地做到这一点?
两者之间的差异超过10000个文件,因此手动选择不是一种选择。
我尝试了几种方法,包括将git与“他们的”策略合并,但是我仍然存在很多冲突。
不管潜在冲突文件的数量或代码的差异如何,这三个命令都可以
# if you don't need to checkout the branch immediately
git branch -f B C
# if you DO want to checkout the branch immediately
git checkout -B B C
# if you branch B is ALREADY checked out
git reset --hard C
Run Code Online (Sandbox Code Playgroud)
会B指向与相同的提交C,从而使它们完全相同,代码和历史记录。没有冲突解决,没有合并,它是瞬时的。
请注意,这被视为对B的最近历史记录的重写,因此,如果您要B与任何人共享分支,则不要使用此方法。
这也将间接引用任何提交发上B后,C被分流,所以如果您有任何疑问,请事先做好备份的B使用
git branch backup-B B
Run Code Online (Sandbox Code Playgroud)
最后...您忘记备份了,后悔了吗?git reflog会列出的先前位置HEAD,您将在B此处找到,恢复使用git reset --hard <old position hash>或将其放在上面以进行检查/重复使用git branch recovered-B <old position hash>
| 归档时间: |
|
| 查看次数: |
62 次 |
| 最近记录: |