Git - 仅更新当前分支中存在的文件

时间:2014-07-31 23:10:13

标签: git version-control

我的本​​地仓库中有2个分支 - 主(核心文件)和master_with_adds(核心+附加配置)

    • 系统/
    • 库/
  • master_with_adds
    • 系统/
    • 库/
    • 增加了/

所有2个分支包含相同的文件,但master_with_adds包含其他文件夹。现在我切换到master_with_adds,进行一些更改并提交。如何仅使用master中存在的文件更新master分支?即我必须只复制systemlibs,不得复制文件夹adds

已解答:我在git 'merge' only existing files

找到了答案

2 个答案:

答案 0 :(得分:1)

如果您想要带来的更改不包括添加或删除文件,您可以

git checkout master
git ls-files -z \
| xargs -0 git checkout master_with_adds --

你已经完成了。如果您确实想要导入添加和删除最简单,那么可以从那里开始,尽管您可以通过使用GIT_INDEX_FILE环境变量来构建完整所需状态的边带索引,从而实现完整的过程。将选定的git ls-tree输出提供给git update-index --index-info,然后git write-tree,然后git read-tree -um生成的树以完成转换。这让我觉得有点矫枉过正。

答案 1 :(得分:0)

git checkout会这样做。类似的东西:

$ git branch
* master
  master_with_adds
$ git checkout master_with_adds /system /libs
$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   new file:   .....
#   new file:   .....
#
$ git commit -m "'Merge' code from 'master_with_adds' branch"
[master]: created 4d3e37b: "'Merge' code from 'master_with_adds' branch"
4 files changed, 72 insertions(+), 0 deletions(-)
create mode 100644 ...