Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.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 merge不添加新文件_Git_Merge - Fatal编程技术网

Git merge不添加新文件

Git merge不添加新文件,git,merge,Git,Merge,以下是我的提交历史记录: * Merge commit (missing file a.c) /| || *| Add new file a.c again <- branchB || |* Remove files a.c <- branchA || *| Remove files a.c || \| | * Add new file a.c | | ... 在合并过程中,没有提及文件a.c.,并且在branchA中合并后该文件不存在。为什么git看不到branchB中

以下是我的提交历史记录:

 * Merge commit (missing file a.c)
/|
||
*| Add new file a.c again <- branchB
||
|* Remove files a.c <- branchA
||
*| Remove files a.c
||
\|
 |
 * Add new file a.c
 |
 |
...
在合并过程中,没有提及文件a.c.,并且在branchA中合并后该文件不存在。为什么git看不到branchB中的文件a.c是在删除之后添加的(关于日期和时间)(在两个分支中),因此它需要保留它?至少,我想看到一场冲突或是什么

谢谢你的帮助

从评论中:

具体来说,三个且只有三个提交很重要:合并基, 两个分支回到一起(这是你的底部)添加新的 文件a.c commit),以及两个分支提示a和B

正如你提到的:

Git发现合并基之间的文件a.c没有变化 和branchB。但在合并基础和branchA之间,它看到了一个 删除。因此,结果是文件a.c被删除

在合并分支之前,可以对两个提交使用
git difftool
。您将能够看到丢失的文件及其内容,并手动重新保存它们

您还可以在两个分支上使用
git diff--name only
。一旦识别出丢失的文件,您可以直接将它们从branchB签出到branchA:

git checkout branchA
git checkout branchB -- a.c

你可以发布你运行的git命令吗?我编辑了我的帖子。只需使用git签出,然后使用git合并。当然,我在这两个分支中有更多的提交,并且必须解决一些冲突。但与此文件没有冲突。它不应该查看日期,因为合并并不意味着更喜欢晚一点的更改而不是早一点的更改。日期和时间与Git无关;重要的是承诺。具体来说,三个且只有三个提交很重要:合并基,其中两个分支返回到一起(这是您的底部
addnewfilea.c
commit),以及两个分支提示a和B。Git将合并基与a区分,以查看a组更改了什么。Git将合并基与B进行区分,以查看B组更改了什么。Git然后将这两个更改组合起来,将组合后的更改应用到合并基,并提交结果。好的,这样Git就可以看到合并基和branchB之间的文件a.c没有更改。但是在合并基和branchA之间,它看到了一个删除。因此,结果是文件a.c被删除。在我的例子中,使用git merge,即使在管理冲突之后,结果项目也处于无效状态,无法再编译/工作。。。从git的角度来看,我应该怎么做?我是否应该知道git merge或merge参数的替代方案?
git checkout branchA
git checkout branchB -- a.c