我们在 Windows Powershell 上使用 posh-git 进行源代码控制。
我们处于将一些构建的程序集存储在 git 存储库中的尴尬境地。我知道所有关于为什么你不应该这样做的说教,但我们现在必须忍受它。值得庆幸的是,他们在一个单独的解决方案中,但有时两个人同时在自己的分支中处理该解决方案,最后一个人会遇到 merge 冲突。当然,这个过程看起来像这样:
- A 在开发中进行了更改。
- B merge 这些更改,其中包括程序集和 更新源代码。
- B 负责解决冲突,因为必须确认每个版本的版本 他们想要保留的程序集。这既烦人又耗时 并且也是不必要的,因为 B 会在之后重建组件 无论如何 merge 源代码。
- B 重建程序集并进行新的提交以完成 merge 。
程序集位于我们存储库的文件夹中:/Source/Foundation Assemblies/
B 不能只从远程获取所有更改,因为他们的分支可能存在冲突的更改,但是“获取他们的”或“获取我的”会很有帮助仅/Source/Foundation Assemblies/文件夹。这是可以用 git 完成的事情吗?
命令行示例会很有帮助。通常, merge 只是:
git merge develop
我认为可能可以 .gitignore/Source/Foundation Assemblies/文件夹,然后在 merge 后将其从 .gitignore 中删除,但这需要三个步骤。如果我们可以从命令行中完成此操作,那就太好了!!!
感谢任何帮助!
最佳答案
在您的情况下,“正确”的方法是在提交 merge 之前重建程序集。我不明白你为什么不这样做。以下步骤应该有效:
- 解决并
git add
所有冲突的来源。那么 merge 期间发生的任何事情都不会影响您提交的内容。 - 删除有冲突的程序集文件。无需对其 git 信息执行任何操作,只需删除文件即可
- 构建程序集。
-
git add
准备好的组件。 - 然后提交。您得到的是 merge ,其中包括本地和远程更改。
编辑:试试这个:
-
git rm --force -r <dirname>
- 运行您的 merge 工具,现在它应该提到二进制文件(
kdiff3
没有) - 构建程序集
-
git add <dirname>
- 提交
我试过this bash 脚本来重现我所理解的情况。
关于git - 在 git merge 期间如何接受特定文件夹中的所有远程文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35441218/