在对master分支进行一些修复时,我不小心创建了一个新的分支origin / $ git show-ref
输出为:
57c425c922d25ebb90c0acdb824f103eb5086188 refs/heads/master
57c425c922d25ebb90c0acdb824f103eb5086188 refs/remotes/origin/HEAD
57c425c922d25ebb90c0acdb824f103eb5086188 refs/remotes/origin/master
aeb2652a82d0d95af940d42007e4315621f7e4d1 refs/remotes/origin/ron
我的代码未与起源/母版合并。 我该如何清理?并使用一个新的本地分支并将所有更改提交到存储库中的master分支
答案 0 :(得分:2)
首先要解决一个术语问题,因为否则一切都会令人困惑:
诸如master
之类的名称是分支名称。
诸如origin/master
之类的名称是远程跟踪名称,或者有时(实际上,更通常是)称为远程跟踪分支名称 em>。我不喜欢这个词,因为这些远程跟踪的东西不能像(本地)分支名称那样正常工作,并且容易混淆两者。
这两个都存在于您自己的Git存储库中,但是由于 一些其他Git存储库,远程跟踪名称存在 。
origin
本身是一个远程。遥控器只是代表其他一些Git存储库的简称,它存储一个URL,通过该URL 您的 Git可以调用该 other Git。牢记所有这些,有一个秘诀很重要,git show-ref
向您展示了:分支名称和远程跟踪名称都使用了更通用的机制。这意味着它们具有完整名称,分别以refs/heads/
和refs/remotes/
开头拼写。
您无法使用git branch
或git checkout -b
创建远程跟踪名称。您只能创建一个分支名称。您的Git将基于 other Git的分支名称来创建,更新和销毁远程跟踪名称!记住,每个Git都是自己的Git,因此每个都有自己的分支名称。您的远程跟踪名称只是Git记住其 Git分支名称的方式。
现在,你说:
...我不小心创建了一个新的分支原点/
...
但是如上所述,您实际上不能做到这一点。您可以 创建一个名为origin/ron
的(本地)分支,但其全名将为refs/heads/origin/ron
。 1 您的{{1} }输出显示git show-branch
,这意味着您不要拥有一个名为refs/remotes/origin/ron
的分支。这意味着没有什么可以删除!
现在,如果您想让ron
走开,那会有些棘手。您需要说服 other Git删除名为origin/ron
的 its 分支。如果您使用Web GUI与另一个Git对话,则它可能具有自己的clicky按钮,用于在该Git中创建和删除分支名称。或者,您可以使用自己的Git及其ron
向其Git发送一个请求,要求他们删除他们的 git push
,这很简单:
ron
会做到这一点。
一旦没有有一个名为git push --delete origin ron
的分支-在其 the Git中其全名是ron
的引用,您然后希望让您的 Git获取其最新信息,并使用该信息通过以下方式“修剪”您剩下的任何远程跟踪名称:
refs/heads/ron
这将使您的Git调用其Git并获取其分支列表(现在将不包括其git fetch --prune origin
),然后根据其分支更新您的远程跟踪名称(这将删除您的{ {1}}。
1 不要这样做!它不会破坏Git — Git知道,由于ron
部分的缘故,它是一个分支名称,而不是一个远程跟踪名称,但令人困惑。如果您确实是这样做的,请使用origin/ron
删除它,或使用refs/heads/
重命名它(m代表“ move” =重命名),这样它就不会看起来像一个远程跟踪名称