git - 在 git merge 期间如何接受特定文件夹中的所有远程文件?

标签 git powershell merge gitignore posh-git

我们在 Windows Powershell 上使用 posh-git 进行源代码控制。

我们处于将一些构建的程序集存储在 git 存储库中的尴尬境地。我知道所有关于为什么你不应该这样做的说教,但我们现在必须忍受它。值得庆幸的是,他们在一个单独的解决方案中,但有时两个人同时在自己的分支中处理该解决方案,最后一个人会遇到 merge 冲突。当然,这个过程看起来像这样:

  1. A 在开发中进行了更改。
  2. B merge 这些更改,其中包括程序集和 更新源代码。
  3. B 负责解决冲突,因为必须确认每个版本的版本 他们想要保留的程序集。这既烦人又耗时 并且也是不必要的,因为 B 会在之后重建组件 无论如何 merge 源代码。
  4. B 重建程序集并进行新的提交以完成 merge 。

程序集位于我们存储库的文件夹中:/Source/Foundation Assemblies/

B 不能只从远程获取所有更改,因为他们的分支可能存在冲突的更改,但是“获取他们的”或“获取我的”会很有帮助仅/Source/Foundation Assemblies/文件夹。这是可以用 git 完成的事情吗?

命令行示例会很有帮助。通常, merge 只是:

git merge develop

我认为可能可以 .gitignore/Source/Foundation Assemblies/文件夹,然后在 merge 后将其从 .gitignore 中删除,但这需要三个步骤。如果我们可以从命令行中完成此操作,那就太好了!!!

感谢任何帮助!

最佳答案

在您的情况下,“正确”的方法是在提交 merge 之前重建程序集。我不明白你为什么不这样做。以下步骤应该有效:

  1. 解决并 git add所有冲突的来源。那么 merge 期间发生的任何事情都不会影响您提交的内容。
  2. 删除有冲突的程序集文件。无需对其 git 信息执行任何操作,只需删除文件即可
  3. 构建程序集。
  4. git add准备好的组件。
  5. 然后提交。您得到的是 merge ,其中包括本地和远程更改。

编辑:试试这个:

  1. git rm --force -r <dirname>
  2. 运行您的 merge 工具,现在它应该提到二进制文件( kdiff3 没有)
  3. 构建程序集
  4. git add <dirname>
  5. 提交

我试过this bash 脚本来重现我所理解的情况。

关于git - 在 git merge 期间如何接受特定文件夹中的所有远程文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35441218/

相关文章:

git - 警告 : Permanently added the RSA host key for IP address 'xxx.xx.xxx.x' to the list of known hosts

git - 如何git rm一个名称以 ':'开头的文件

powershell - 修改 “tf history”命令以仅生成未合并的变更集

git - 如何依赖GitHub上Maven管理的项目?

svn - 我如何调整我的 svn :externals strategy to git submodules?

visual-studio - 第二次运行脚本后,Powershell 无法覆盖持续错误?

Powershell 列出非事件帐户

c# - 合并带有书签的 pdf 文件

ios - RacSignal 自动处置

Solr 核心的 numDocs 不等于已处理文档的总和