更改Git主分支路径?

更改Git主分支路径?,git,Git,我想更改主分支的路径。我不知道如何描述它,所以这里有一张图片显示了我的意思。左侧显示当前状态,右侧显示所需状态: 因此,虽然有两条路径,但主分支中的一条提交路径应该在侧分支中,反之亦然。有办法吗?尝试重命名分支: git branch -m master new-name git branch -m old-name master 如果您想要交换名称: git branch -m master temp-name git branch -m old-name master git branc

我想更改主分支的路径。我不知道如何描述它,所以这里有一张图片显示了我的意思。左侧显示当前状态,右侧显示所需状态:

因此,虽然有两条路径,但主分支中的一条提交路径应该在侧分支中,反之亦然。有办法吗?

尝试重命名分支:

git branch -m master new-name
git branch -m old-name master
如果您想要交换名称:

git branch -m master temp-name
git branch -m old-name master
git branch -m temp-name old-name
尝试重命名分支:

git branch -m master new-name
git branch -m old-name master
如果您想要交换名称:

git branch -m master temp-name
git branch -m old-name master
git branch -m temp-name old-name
同样,您不能总是信任图形查看器提供的颜色(信任程度取决于特定查看器)。然而,Git本身确实赋予了通过图的某些路径一些意义

提交图与任何图一样,可以定义为G=(V,E),其中G是图,V和E分别是顶点(或节点)集和边集。在这个特定的数学形式中,所有边都是相等的:如果从节点ID为
c123456
的合并提交向后通过其第一个父边提交
a000000
,或者通过其第二个父边提交
b000000
,这并不重要。但是对于Git来说,
-Git log
--first parent
标志将修剪掉所有不是第一次提交的合并提交边

也就是说,图的数学属性不依赖于路径顺序,Git的大多数部分同时沿着两条路径下降,但出于某些目的,特别是包括
Git log--first parent
,您可能真的想要控制哪个父级是第一父级,哪个是第二父级

不幸的是,一旦进行了合并提交,就无法对其进行更改。任何承诺都无法改变;地球上没有任何力量能做到这一点

您可以按另一个顺序进行新合并,以便新合并的第一个父节点是当前合并的第二个父节点,而新合并的第二个父节点是当前合并的第一个父节点。要在Git中实现这一点,最好先签出第二个父级,同时附加一个新的分支名称,然后运行第一个父级的Git merge ID(请注意,您可以直接使用这两个哈希ID,也可以使用其中的任何拼写):

或:

请注意,这种提交的重写假定您没有将合并提交和后续提交提交到任何其他Git存储库,或者如果您已经提交了,则使用该其他存储库的所有其他人都可以以一种不寻常的方式进行
master
更改

还要注意的是,
git pull
使这些类型的“反向”合并(从一个特定的角度来看是反向的;从另一个相当自恋的角度来看,它们是完全正确的!)。有人把这称为一场战争。如果您可以控制服务器上的预接收或更新挂钩,则可以禁止它们。作为用户,您可以避免使用
git pull
。(我建议一般避免使用
git-pull
:这是一个很方便的命令,很不方便。)

因为,您不能总是信任图形查看器提供的颜色(信任程度取决于特定的查看器)。然而,Git本身确实赋予了通过图的某些路径一些意义

提交图与任何图一样,可以定义为G=(V,E),其中G是图,V和E分别是顶点(或节点)集和边集。在这个特定的数学形式中,所有边都是相等的:如果从节点ID为
c123456
的合并提交向后通过其第一个父边提交
a000000
,或者通过其第二个父边提交
b000000
,这并不重要。但是对于Git来说,
-Git log
--first parent
标志将修剪掉所有不是第一次提交的合并提交边

也就是说,图的数学属性不依赖于路径顺序,Git的大多数部分同时沿着两条路径下降,但出于某些目的,特别是包括
Git log--first parent
,您可能真的想要控制哪个父级是第一父级,哪个是第二父级

不幸的是,一旦进行了合并提交,就无法对其进行更改。任何承诺都无法改变;地球上没有任何力量能做到这一点

您可以按另一个顺序进行新合并,以便新合并的第一个父节点是当前合并的第二个父节点,而新合并的第二个父节点是当前合并的第一个父节点。要在Git中实现这一点,最好先签出第二个父级,同时附加一个新的分支名称,然后运行第一个父级的Git merge ID(请注意,您可以直接使用这两个哈希ID,也可以使用其中的任何拼写):

或:

请注意,这种提交的重写假定您没有将合并提交和后续提交提交到任何其他Git存储库,或者如果您已经提交了,则使用该其他存储库的所有其他人都可以以一种不寻常的方式进行
master
更改


还要注意的是,
git pull
使这些类型的“反向”合并(从一个特定的角度来看是反向的;从另一个相当自恋的角度来看,它们是完全正确的!)。有人把这称为一场战争。如果您可以控制服务器上的预接收或更新挂钩,则可以禁止它们。作为用户,您可以避免使用
git pull
。(我建议一般避免使用
git-pull
:这是一个很方便的命令,很不方便。)

这可能只是树查看器的一个怪癖。我认为这无关紧要。树是一样的,只是颜色不同。这可能只是树查看器的一个怪癖。我认为这无关紧要。这棵树是一样的,只是颜色不同。哇,谢谢你这么详细的解释!我可以学到一些关于gitn的新东西
git branch -f master rework
git checkout master && git reset --hard rework