我对Git非常陌生,想知道在本地repo中删除主分支上的多个文件,但这些文件存在于远程主分支中的合并应该如何进行。
执行 git-merge 后,它显示了发生的冲突。
使用 Git GUI,它显示本地文件已被删除,而远程分支文件具有内容。
您如何阻止这些文件产生冲突?是否有一种使用Git GUI的简单方法?
非常感谢。
我对Git非常陌生,想知道在本地repo中删除主分支上的多个文件,但这些文件存在于远程主分支中的合并应该如何进行。
执行 git-merge 后,它显示了发生的冲突。
使用 Git GUI,它显示本地文件已被删除,而远程分支文件具有内容。
您如何阻止这些文件产生冲突?是否有一种使用Git GUI的简单方法?
非常感谢。
您应该根据自己的判断解决冲突。如果文件确实应该被删除,并且您将发布该更改到远程仓库,请再次将其删除:
git rm path/to/file
如果文件实际上仍应该被跟踪,请将其添加到版本控制中(工作树中的版本将是来自原始版本的版本):git add path/to/file
在执行这些操作解决冲突后,提交合并。
cd
到目录,然后使用git rm *.ext
命令。你的shell(而不是Git)会将*.ext
扩展为所有匹配的文件名。 - Cascabelgit rm
没有-i
标志。 - chiborggit rm *-suffix.ext
?差不多一样。如果你不知道如何使用shell通配符,可以在unix.stackexchange.com上提问。如果你确信所需操作无法通过globbing完成,则使用 rm -i
,然后接着使用 git add -u
来选择性地添加删除。 - Cascabel-s recursive -X ours
,为什么还需要执行git rm
和git add
操作? - Noel Yap除了已接受的答案之外,我还想提供一个小技巧:如果您想查看在“我们已删除”的情况下对文件所做的更改,以便您可以在其他地方应用这些更改,您可以使用:
git diff ...origin/master -- path/to/file
如果是“被他们删除”的情况,您希望查看更改以便在其他地方应用它们,您可以使用:
git diff origin/master... -- path/to/file
git diff mybranch@{1}...origin/master -- path/to/file
。 - nschumgit diff --base
命令(详见我的另一篇回答)。 - Dorian Marchalgit diff --base
从 https://git-scm.com/docs/git-diff#Documentation/git-diff.txt--1--base
将工作树与“base”版本进行比较[...]. 索引仅包含未合并条目的这些阶段,即在解决冲突时。
git diff --base
的好解释 https://dev59.com/fbnoa4cB1Zd3GeqPS5C3#60484874 - Ryangit diff --base /path/to/file
。 - chtenb