gpt4 book ai didi

git - 如何使不可推送的提交可推送?

转载 作者:太空狗 更新时间:2023-10-29 14:34:04 26 4
gpt4 key购买 nike

Master Branch 有这样的提交:A -> B -> C(HEAD)HEAD 位于 C

我做了什么:

我检查了 B 并在其上进行了提交。

现在树看起来像这样:

    A -> B -> C(master)(origin/master)         |         | -> B1 -> B2(HEAD)
项目目录上的

git status 给我以下消息:

# Not currently on any branch.nothing to commit (working directory clean)`

所以就是说B1B2是不能push的。我知道这是因为这些提交在任何分支上都不存在。现在,如果我将我的分支切换回 master,这些提交会丢失吗?我期待在这些未命名的分支上进行更多提交(B3,B4 ... BN),之后我希望 C 位于它之上。本质上,我希望以这种方式查看 master 分支:

    A -> B -> B1 -> B2 -> B3 -------> BN -> C(master)(origin/master)

或者至少这样:

    A -> B ---------------------> C(master)(origin/master) -> D         |                                                    ^         |                                                    |         | -> B1 -> B2 -> -> ...->BN--------------------------

我有什么选择可以完成这个?我希望能够将提交保存在 origin 中。

如有任何建议/指示,我们将不胜感激。

最佳答案

你想要的结果

A -> B -> B1 -> B2 -> B3 -------> BN -> C(master)(origin/master)

除非您可以在远程仓库中重写C,否则这是不可能的;这样做会给所有基于 C 完成工作的其他人带来问题。

第二个偏好

A -> B ---------------------> C(master)(origin/master) -> D
| ^
| |
| -> B1 -> B2 -> -> ...->BN--------------------------

很简单:正如 Magnus 所说,如果你给 B2 (或者你序列中当前最新提交的任何东西)一个分支名称,你会让你的生活更轻松:这更容易记住并键入哈希值,并确保它不会被垃圾收集。

git checkout -b bbranch

A -> B -> C(master)(origin/master)
|
|
| -> B1 -> B2 (bbranch)

现在,如果你出于任何原因想要将 B1B2 推送到 origin,你可以像往常一样 merge 和推送

git checkout master
git pull
git merge bbranch

A -> B ------> C -> D (master)
| /
| /
| -> B1 -> B2 (bbranch)

git push

您可以继续处理bbranch,并在完成后再次 merge

A -> B ------> C -> D -> E -> ... -> En -> F (master)
| / /
| / /
| -> B1 -> B2 -> B3 -> ... -> Bn (bbranch)

注意:如果你出于任何原因想要将你的提交推送到 origin,但你希望它们在 ma​​ster 上,你可以简单地推送 bbranch 它会带走你的提交。然后,您需要确保没有其他人会触及 bbranch,或者将您的本地副本设为远程跟踪分支。

在这种情况下,将 merge 步骤 B2 -> D 替换为 git push origin bbranch

关于git - 如何使不可推送的提交可推送?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9416219/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com