我有两个分支,“master”和“develop”。
其他分支已合并到“master”中。
现在,当我将“master”合并到“develop”中时,“master”中的一些文件不会转移到“develop”中。
我该如何解决这个问题?
当我将 master 合并到开发中时,它给我带来了冲突:
一旦解决,主控中的某些文件(不是屏幕中的文件)将不会带回开发。
在 master 中,有些提交涉及创建/修改未合并到开发中的文件。
没有删除这些文件的提交
如何解决这个问题?
谢谢你
更新
6月,一个分支被合并到Develop中,然后立即恢复。
这个分支是从master开始的。难道我所指的文件没有因为该恢复而被带入开发中?
现在,当我将master合并到develop中时,该文件存在于Master中,但合并不携带AccessTokenController.php
Develop删除了AccessTokenController.php,因此不会通过合并复活。 Git 不明白删除是由于恢复所致。
如果没有完整的历史,我无法确定,
git log --graph --decorate --oneline --stat develop master
,但这是似乎合理的。
将修复内存限制合并到开发中,然后恢复您的存储库后,看起来像这样。
R [develop] << deletes AccessTokenController.php
|
M
|\
3 \
| 9 [fix memory limit]
2 |
| 8
1 | C [master]
\ \ |
\ \|
\ B << adds AccessTokenController.php
\ |
\ |
\|
A
...
M 是合并。 R是回归。 B 添加了 AccessTokenController.php,它是在 master after 开发分支上完成的。
M 将 AccessTokenController.php 引入开发,但 R 将其删除。请注意,在合并之前,B 不是开发历史的一部分,现在是了。
您将master合并到develop中。
$ git switch develop
$ git merge master
M2 [develop]
|\
| \
| \
| \
| \
R | << rm AccessTokenController.php
| |
M |
|\ |
3 \ |
| 9 | [fix memory limit]
2 | |
| 8 |
1 | C [master]
\ \ |
\ \|
\ B << adds AccessTokenController.php
\ |
\ |
\|
A
...
develop看到它删除了AccessTokenController.php,因此不允许合并复活它。 AccessTokenController.php 自合并以来没有更改,因此不会产生冲突。
git reset
完全撤消合并提交,而不是恢复。 git-reset
允许您随意移动树枝。
让我们回到第一次合并之后。
M [develop]
|\
3 \
| 9 [fix memory limit]
2 |
| 8
1 | C [master]
\ \ |
\ \|
\ B
\ |
\ |
\|
A
...
不要恢复,而是撤消合并。将开发移回提交 3。
$ git switch develop
$ git reset --hard 3
M
|\
3 \ [develop]
| 9 [fix memory limit]
2 |
| 8
1 | C [master]
\ \ |
\ \|
\ B
\ |
\ |
\|
A
...
现在就好像合并从未发生过一样。虽然合并提交仍然存在,但没有任何内容引用它;它最终会被垃圾收集。