首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从远程仓库合并/拉取

如何从远程仓库合并/拉取
EN

Stack Overflow用户
提问于 2011-03-21 00:32:12
回答 2查看 1.4K关注 0票数 4

我正在尝试将一些子目录从远程git存储库合并到我的存储库中。远程存储库和本地存储库都包含整个内核存储库,我只对无线相关文件感兴趣。我尝试按照"How to use the subtree merge strategy"下的说明进行操作,但由于大多数文件既存在于本地存储库中,也存在于远程存储库中,所以git read-tree --prefix=dir-B/ -u Bproject/master命令失败。我不能在同一命令行中使用-m选项和--prefix

这个合并实际上应该根据远程存储库中的文件更新(合并/拉取)所有相关的无线目录/文件,其中冲突应该通过优先选择远程文件来解决。

为了使我的问题更通俗些--假设您有存储库A和B。这两个存储库都有文件夹wireless_dir: A/无线目录,B/无线目录。我在存储库B上工作,希望从A/wireless_dir更新B/wireless_dir中的所有文件,当合并冲突发生时,A/wireless_dir中的更改是首选的。

EN

回答 2

Stack Overflow用户

发布于 2011-04-06 06:56:47

根据Jeformi的评论,似乎你已经有了文件夹是一个单独的存储库的情况,如果是这样的话,你所要做的就是一个git pull

然而,如果你正在寻找的提交中有你不想要的其他文件夹中的文件,Git允许你以如下方式"unsqaush“提交:redhatmagazine

执行此操作的步骤(对于您的情况稍微泛化一点)是:

1)记下你的大脑当前所在的commit,让我们将其称为<OLD_HEAD>。这可以从日志中获得,并通过使用以下命令查看最新提交的sha1:

代码语言:javascript
复制
git log

2)将存储库A中的更改引入到您的分支中(这将包括您可能不需要的任何更改):

代码语言:javascript
复制
git pull <repo A> <branch_name>

3)现在是时候使用<OLD_HEAD>了(以一种非粗俗的方式)……这是通过重置来完成的

代码语言:javascript
复制
git reset --mixed <OLD_HEAD>

4)完成了所有工作后,您的头回到了<OLD_HEAD>,索引也是一样的,但是在您的工作目录中,您现在有了您一直在寻找的存储库A中的更改,以及wireless_dir文件夹之外的文件的可能性。要以交互方式将工作目录中的这些文件合并到索引中,请使用(如果需要的话,仅在wireless_dir中的文件上):

代码语言:javascript
复制
git add --patch <filename>

5)最后:

代码语言:javascript
复制
git commit -m “Selectively merged my files”

注意:如果你不想碰巧搞砸了你的分支,在尝试上面的方法之前创建一个新的分支。

票数 1
EN

Stack Overflow用户

发布于 2011-04-06 08:00:35

最简单的方法是合并整个分支,将该文件夹复制到git树之外,撤消或中止合并,然后将文件夹复制回来。

但是,如果任何更改在该文件夹之外具有依赖关系,您就会遇到问题。您可能希望(从git log subdir)对涉及该文件夹的所有提交进行cherry-pick,以拉入依赖项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5369779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档