Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.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_Merge - Fatal编程技术网

Git 意外地合并到错误的分支到我的。有没有办法删除这些不需要的文件?

Git 意外地合并到错误的分支到我的。有没有办法删除这些不需要的文件?,git,merge,Git,Merge,我不小心把一个同事分支合并到了我正在工作的分支中。从那以后,我做了几次提交,所以理想情况下我不想恢复到合并之前分支的状态。然而,我没有做任何改变他的文件的事情 我有没有办法把他的分公司的文件从我的文件中删除 (对不起,我是git新手-希望我已经记下了术语)。也许这里最简单、最安全的选择是恢复您在几次提交之前进行的合并提交。要执行此操作,请使用git log在历史记录中查找合并提交,并记录该提交的SHA-1哈希。然后,执行以下操作: git revert -m 1 <SHA-1> g

我不小心把一个同事分支合并到了我正在工作的分支中。从那以后,我做了几次提交,所以理想情况下我不想恢复到合并之前分支的状态。然而,我没有做任何改变他的文件的事情

我有没有办法把他的分公司的文件从我的文件中删除


(对不起,我是git新手-希望我已经记下了术语)。

也许这里最简单、最安全的选择是恢复您在几次提交之前进行的合并提交。要执行此操作,请使用
git log
在历史记录中查找合并提交,并记录该提交的SHA-1哈希。然后,执行以下操作:

git revert -m 1 <SHA-1>
git还原-m 1
此处
是要撤消的合并提交的哈希。
-m1
选项告诉Git恢复到第一个父级,这是合并发起的分支,它应该是您的分支。

如果您没有将提交推送到(发布)任何地方,最简单的修复方法是重新设置合并的基础。(即使已发布,也可以执行此操作,但请参见警告。)

命令
git-rebase
复制提交,但默认情况下,它放弃合并提交。
git-rebase
的正常目标是复制提交,以便它们位于不同的位置。例如,您可能有:

...--o--*--o--o     <-- master
         \
          A--B--C   <-- yourbranch
但是,由于
git-rebase
通常会放弃合并,因此您可以将基础重新设置到现在的位置,并在此过程中放弃合并:

...--o--*--o--o--o--...
         \     \
          A--B--X--C--D   <-- yourbranch
Git将要复制的提交列为“那些在
*
之后,直到
yourbranch
的顶端,任何合并除外”。那是
A-B-C-D
。然后它“复制”
A
(它不必这样做,因此它实际上在默认情况下会重新使用原始的
A
,“复制”
B
(同样也不必),复制
C
(此时必须将原始的
C
连接到
X
,而新的
B
),并复制
D
,使
yourbranch
指向上次复制的提交并放弃旧链:

...--o--*--o--o--o--...
         \     \
          A--B--X--C--D  [abandoned]
              \
               C'-D'  <-- yourbranch
随着
C
D
的消失,我们甚至不需要
C'
D'
标记。不过,我会把它们留在这里,只是把我们不再需要的纠结理顺:

...--o--*--o--o--o--...
         \
          A--B--C'-D'  <-- yourbranch
…--o--*--o--o--o--o--。。。
\

A--B--C'-D'作为一个新的git用户,感谢heaps包含了
-M1
的含义。这样做的缺点是git仍然相信合并发生了(因为它发生了!),所以如果你想合并的话,这可能会让你以后感到心痛。感谢你发布了这篇文章,非常有用+1.
...--o--*--o--o--o--...
         \     \
          A--B--X--C--D  [abandoned]
              \
               C'-D'  <-- yourbranch
...--o--*--o--o--o--...
         \
          A--B
              \
               C'-D'  <-- yourbranch
...--o--*--o--o--o--...
         \
          A--B--C'-D'  <-- yourbranch