我的目标很容易解释,但我找不到任何方法来做到这一点。 假设我有 3 个分支机构。 A、B、C
A -------.
\--------.----------- B
\
.-------------- C
我只是想将整个分支“C”推送到分支“B”。让我解释一下:我不想保留从 B 创建 C 后在 B 中所做的任何事情。我只是希望 B 具有与分支 C 完全相同的代码。
我怎样才能安全地做到这一点?
两者之间有超过 10 000 个不同的文件,因此无法手动操作。
我尝试了几种方法,包括 git merge 和“他们的”策略,但不知何故我仍然遇到很多冲突。
最佳答案
无论潜在冲突文件的数量或代码差异如何,这三个命令中的任何一个
# 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
将使B
指向与 C
相同的提交,使它们完全相同,代码和历史。没有冲突解决,没有 merge ,它是即时的。
请注意,这被认为是对 B
的重写的最近历史记录,所以如果您共享分支 B
,则不要使用它与任何人。
它还会取消对 B
上的任何提交的引用在 C
之后是从它分支出来的,所以如果您有任何疑问,请事先备份B
与
git branch backup-B B
最后...您忘记备份并后悔了吗? git reflog
将列出 HEAD
的先前位置, 你会发现 B
在那里,用 git reset --hard <old position hash>
恢复它或使用 git branch recovered-B <old position hash>
在其上放置 Handlebars 以供检查/重复使用
关于GITLAB:如何将整个分支推送到另一个分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58537950/