gpt4 book ai didi

git:将删除的分支推送到远程

转载 作者:太空狗 更新时间:2023-10-29 13:20:54 26 4
gpt4 key购买 nike

目标:删除名为“branchname”的远程分支

我以前做的步骤是:[第一种方法]

  1. git branch -d 分支名
  2. git push origin :分支名

今天我尝试使用与上述相同的步骤进行删除,但遇到如下问题:

$ git branch -d branchname
warning: deleting branch 'branchname' that has been merged to
'refs/remotes/origin/branchname', but not yet merged to HEAD.
Deleted branch branchname (was f394ddc).
prash ~/folder/project1 (branch1)
$ git push origin branchname
Enter passphrase for key '/c/Users/prash/.ssh/id_rsa':
error: src refspec branchname does not match any.
error: failed to push some refs to 'ssh://git@abc.xyz/projname.git'

最后我能够通过不同的方法删除,[第二种方法]

$ git push origin --delete branchname

问题,

你知道为什么我不能按照第一种方法删除远程分支吗?另外,为什么那个警告?

编辑:

我试图通过创建和删除远程分支来复制第一个问题,这次我所做的唯一更改是在我早先错过的分支名称之前添加了一个冒号,它被删除了。不确定这是否是之前的原因。

最佳答案

在你的第一个例子中,推送失败的原因是因为你做了

git push origin branchname

代替

git push origin :branchname

冒号有意义;这是推送分支和删除分支之间的区别。这里的一个字符的区别是为什么 git push origin --delete branchname 通常是一个更安全的命令。

因为你删除了 branchname,当你试图推送它时,git 说“我不知道 branchname 是什么,因为我没有同名的分支”并且无法推送任何内容。

你可能认为在本地删除分支只是将该分支标记为“已删除”,因此当你推送它时,originbranchname 版本也会得到标记为“已删除”,但这不是 git 删除分支的方式。当您在本地删除一个分支时,该分支将永远消失(尽管属于该分支的提交仍然存在,因此您可以通过查看 git reflog 来恢复它)。


关于 HEAD 的初始警告,git 正在尝试确保您不会丢失任何数据。

每个分支都可以有一个与之关联的“上游”分支,因此您可以使用 git pushgit pull 而无需指定显式远程和显式分支。当你删除一个分支时,git 会检查上游分支,看看你的本地分支是否有远程上游分支中不存在的提交。删除与远程相同的分支不会丢失任何数据,因为您可以再次检查它。如果您删除包含尚未推送到上游的提交的分支,您可能会丢失数据,因此 git 会尝试在您删除包含未推送提交的分支时发出警告来帮助您解决问题。

但这只是一个警告,因为在很多情况下您并不关心某些提交。它们可能是失败的实验、 merge 分支的非 rebased 版本或其他一些合法情况。

关于git:将删除的分支推送到远程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24619007/

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