gpt4 book ai didi

git - 为什么推送后删除的分支没有在远程删除?

转载 作者:太空狗 更新时间:2023-10-29 13:36:34 25 4
gpt4 key购买 nike

我正在使用 git-flow 并且它所做的是每当我这样做时它都会删除我的 feature/abc 分支:

git flow feature abc finish

它在将 feature/abc 分支与 develop 分支 merge 后删除了它。之后我推送我的 develop 分支。

git push origin develop

现在,在远程我可以看到 feature/abc 分支,但在本地看不到。那么,这是否意味着它已从本地存储库中删除,并且该删除没有传送到远程?

据我了解:

  • 由于 git 是分布式的,所以整个 repo 存在于所有机器上。
  • 因此,如果我对本地存储库进行更改并将其推送到远程。
  • 然后,我的所有更改都应该推送到远程,包括删除。

冲突:

  • 推送后本地和远程 git 仓库有何不同。

=> 假设我是代码的唯一开发者。

更新

我的问题是我在 merge 后删除了本地分支。然后我推送了我 merge 的分支,那为什么不反射(reflect)在 Remote 上呢?因为,GIT 是 DVCS,在推/pull 上应该是相同的。 [考虑到我是唯一的开发者]

我也没有要求创建它。它使分支进行了我的更改,将其 merge 回去然后删除了分支并推送了我更新的开发分支。所以,如果它自动检测到这些分支的创建,那么为什么不删除呢?

最佳答案

Since, GIT is DVCS and should be identical on push / pull.

不,这不是真的。它是分布式的,因此网络中的每个存储库或多或少包含相同的数据,但只是或多或少。当您使用推和 pull 时,您明确指定要推送的内容。

git push remote branch 仅将分支指针 branch 推送到远程存储库,并传输远程存储库构建它所需的所有提交,但不会更多。这意味着只有分支指向的提交和所有父级实际上被推送,直到远程存储库找到它已经拥有的公共(public)父级(在最坏的情况下,这是特殊的零提交,即空父级)。

同理git pull remote branch只在本地获取构建远程分支remote/branch所需的变更。

要真正获得所有提交,您可以使用 git fetch,要推送所有本地分支,您可以使用 git push --all。但同样,它只获取/推送构建分支(或标签)所需的提交,而不是存储库的所有内容。

现在,当您将分支推送到远程存储库时,它只会更新您实际推送的那些分支,因此当您删除本地远程并使用 --all 进行推送时,只会更新您的本地分支推,这不包括删除的。因此,您的本地 Git 不再知道您在本地删除了哪些分支(因为它们已 merge ),因此无法将该信息自动提供给远程存储库。然而,它可以做的是告诉远程存储库它在本地拥有的每个分支,以便远程可以找出哪些被删除了。您可以使用选项 --prune 来执行此操作。但是请注意,这会删除本地不存在的所有分支,因此在与推送不同分支但不 pull 其他分支的多个用户一起工作时可能会出现问题(尽管我实际上从未测试过)。

最好的办法显然是直接删除本地删除的分支:

git push remote :branch

关于git - 为什么推送后删除的分支没有在远程删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11132744/

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