将一些内容从另一个仓库更新到本地仓库

时间:2016-07-05 23:38:45

标签: git github fork

我有2个回购 - repoMainrepoSub我正在处理repoSub ..

几个月前,repoSub被创建为repoMain的分支,几个​​月之后,因为repoMain已经更新了一些新东西,现在我想确保repoSub有一些共同点/ core文件与repoMain处于“相同级别”。

请允许我举一个简单的例子(希望可以理解......), 例如。每个仓库中有5个项目,但它们的文件内容可能彼此不同。

  • 2个内容相同的文件名
  • 具有相同名称但内容不同的2个核心文件
  • 最后一个文件是一个不同的文件,与两个repos不同的内容

由于我一直在研究repoSub,我本来想用repoMain更新具有相同文件名(但文件内容不同)的2个文件,最好的方法是什么,以便我可以最小化任何冲突/ repoMain等没有覆盖repoSub中的任何文件?

我尝试了以下方法:

  • git remote add mainRepo
  • git fetch mainRepo
  • git checkout --track mainRepo / master
  • ∘致命:一个名为'master'的分支已经存在。
  • ∘最终我尝试了另一个具有不同命名的分支 as mainRepo / testBranch
  • git checkout master
  • git merge testBranch

我遇到了一堆冲突错误等。

1 个答案:

答案 0 :(得分:0)

使用结帐表单git checkout [-p|--patch] [<tree-ish>] [--] <pathspec>…​结帐文件而不是分支。

git checkout --patch repoMain/master -- myFile.java

根据git-checkout Documentation:

  

当&lt; paths&gt;或者--patch给出,git checkout不切换分支。它从索引文件或命名的&lt; tree-ish&gt;更新工作树中的命名路径。 (通常是提交)。在这种情况下,-b和--track选项毫无意义,并且给出其中任何一个都会导致错误。 &lt; tree-ish&gt;参数可用于指定特定的树(即提交,标记或树),以在更新工作树之前更新给定路径的索引。

     

git checkout with&lt; paths&gt;或--patch用于从索引恢复其原始内容的修改或删除路径,或用名为&lt; tree-ish&gt;的内容替换路径。 (通常是一个提交者)。

  

<强> -p

     

<强> - 补丁

     

以&lt; tree-ish&gt;之间的差异交互式选择帅哥。 (或索引,如果未指定)和工作树。然后将所选择的帅哥反向应用于工作树(如果指定了&lt; tree-ish&gt;,则为索引)。

     

这意味着您可以使用git checkout -p有选择地放弃当前工作树中的编辑。