Git将另一个存储库中的单个文件合并到我自己的文件

时间:2014-04-26 18:17:27

标签: git version-control

说我有自己的git repo,里面有很多文本文件。还有另一个不同的git repo,其他人拥有一堆文本文件,除了一个文件外,它们都与我自己不同。

我不断对我的仓库中的不同文本文件进行更改,但我偶尔会将该单个文件的任何更改从其他仓库合并到我自己的文件中。

有没有简单的方法可以做到这一点?我已经四处寻找并发现了一些类似的问题,但没有一个问题我们是出于我的确切情况。

4 个答案:

答案 0 :(得分:7)

尝试添加other-repo,然后将其分支包括target-branch

~ $ git remote add other git@github.com:username/other-repo.git
~ $ git fetch other

target-file.ext

中切换到要合并的分支
~ $ git checkout your-branch

将目标文件合并到您的文件中:

~ $ git checkout -p other/target-branch target-file.ext

答案 1 :(得分:2)

您可以合并任意文件或repo对象。最简单的可能是:

git merge-file file.txt <(git show last-merged-file.txt) /path/to/their/file.txt
# resolve any conflicts, then
git tag last-merged-file.txt `git hash-object-w file.txt`

答案 2 :(得分:0)

如果您使用任何类型的包装(工件)导致原始仓库,那么您可以要求仓库的所有者也发布源。然后在您自己的仓库中使用和解压缩此类工件,只需复制您需要的文件即可。例如。如果使用Java-Maven,请确保原始repo上的构建版本也发布了源代码,然后在您自己的repo中,您放置了一个预先步骤(在编译之前),在其中下载源代码依赖项,解压缩jar文件并复制你需要一个正确的目录。

有maven插件

答案 3 :(得分:0)

转到您当前的目录,我现在正在这样做,希望您也能提供帮助。

cd your_current_git_Directory

设置您的用户名和另一个存储库/秒(从要复制的源)

git remote add -f repo-b git@github.com:<username>/<repository>.git

现在,合并您要查找的文件名(如果要文件合并子文件夹)

 git checkout -p repo-b/master  <folder_name>/<filename>

仅合并文件名

 git checkout -p repo-b/master  <filename>

并删除存储库

 git remote rm repo-b