Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
git:创建另一个断开连接的提交的结果_Git - Fatal编程技术网

git:创建另一个断开连接的提交的结果

git:创建另一个断开连接的提交的结果,git,Git,假设我有两个断开连接的根提交,由分支master和new引用。我想在master上创建一个commit,使该分支与newcommit相同。也就是说,看起来像: *“新”更改 如果您希望您的主控状态与新相同,最快的方法就是: git checkout master git reset --hard new 如果您希望您的主控状态与新相同,最快的方法就是: git checkout master git reset --hard new 如果希望在master上创建一个commit,使工作树成为

假设我有两个断开连接的根提交,由分支
master
new
引用。我想在
master
上创建一个commit,使该分支与
new
commit相同。也就是说,看起来像:

*“新”更改
如果您希望您的
主控
状态与
相同,最快的方法就是:

git checkout master
git reset --hard new
如果您希望您的
主控
状态与
相同,最快的方法就是:

git checkout master
git reset --hard new

如果希望在master上创建一个commit,使工作树成为new中的工作树,可以这样做:在new上获取树的对象ID(
git cat file-p new
)。拥有树的id后,使用master作为提交树的父级创建新修订:

git提交树-p master-m“这是一个新的修订版”


这将为您提供新版本的ID。然后,您可以签出master并重置——很难修改版本或在其上创建一个新分支。

如果您希望在master上创建一个commit,从而使工作树保持在new的状态,您可以这样做:在new上获取树的对象ID(
git cat file-p new
)。拥有树的id后,使用master作为提交树的父级创建新修订:

git提交树-p master-m“这是一个新的修订版”

这将为您提供新版本的ID。然后,您可以签出母版并重置--很难修改版本或在其上创建新的分支。

是实现这一点的最短方法之一。另一种最短的方法是,在分支
master
上,使用
git read tree--reset-u new
,然后使用
git commit
进行新的提交。请注意,<代码> Git Read树-RESET U/COD>将破坏任何正在进行的工作(La<代码> Git重置-硬< /代码>),因此确保您不在某个事物的中间。

不幸的是,所有简单快捷的方法都涉及到使用一些不适合人类的“管道”命令,如
git commit tree
git read tree
。与git commit tree相比,
git read tree
的主要优点是后者是一个更严格的约束和规程类型命令,要求您直接指定树散列ID(例如,
new^{tree}
),而不仅仅是解析到树的提交ID。请参阅,了解
new^{tree}
在此处工作的原因。(当然,您还必须提供
master
commit的散列ID,尽管只有
master
可以在那里工作。)

仅使用“普通”命令的更长更丑陋的方法是
git rm-rf.
然后是
git checkout new--.
然后是
git commit
:基本上是“删除所有内容”,然后“从新内容中提取所有内容”,然后提交。此操作必须在工作树的顶部运行。

是执行此操作的最短方法之一。另一种最短的方法是,在分支
master
上,使用
git read tree--reset-u new
,然后使用
git commit
进行新的提交。请注意,<代码> Git Read树-RESET U/COD>将破坏任何正在进行的工作(La<代码> Git重置-硬< /代码>),因此确保您不在某个事物的中间。

不幸的是,所有简单快捷的方法都涉及到使用一些不适合人类的“管道”命令,如
git commit tree
git read tree
。与git commit tree相比,
git read tree
的主要优点是后者是一个更严格的约束和规程类型命令,要求您直接指定树散列ID(例如,
new^{tree}
),而不仅仅是解析到树的提交ID。请参阅,了解
new^{tree}
在此处工作的原因。(当然,您还必须提供
master
commit的散列ID,尽管只有
master
可以在那里工作。)


仅使用“普通”命令的更长更丑陋的方法是
git rm-rf.
然后是
git checkout new--.
然后是
git commit
:基本上是“删除所有内容”,然后“从新内容中提取所有内容”,然后提交。这必须在工作树的顶部运行。

至少需要找出合并冲突,我不需要这样做。公平地说,我在你的回答之后添加了这个要求。我不确定我是否遵循了你的问题,但我用我认为你想要的内容编辑了我的答案。第二个建议(签出然后重置——硬)不是Clay要求的,因为这意味着失去硕士历史。在当前的主控位置之后进行修改是需要的。至少,需要找出合并冲突,我不需要这样做。公平地说,我在你的回答之后添加了这个要求。我不确定我是否遵循了你的问题,但我用我认为你想要的内容编辑了我的答案。第二个建议(签出然后重置——硬)不是Clay要求的,因为这意味着失去硕士历史。在大师的当前位置之后进行修订是我们想要的。这是最短、最简单的方法。不幸的是,所有简短而简单的方法都涉及到使用一些并非真正适合人类的“管道”命令。另一种最短的方法是,在
master
上,使用
git read tree--reset-u new^{tree}
,然后使用
git commit
进行新的提交。只使用“普通”命令的更长(更丑陋)的方法是
git rm-rf.
然后是
git checkout new--.
然后是
git commit
:基本上是“删除所有内容”,然后“从新内容中提取所有内容”,然后提交。(这必须在工作树的顶部运行。)甚至不需要树id,只需要“new”或您通常所指的提交