Git Merge一些文件夹

时间:2016-03-10 10:03:53

标签: git github merge git-merge

我有两个名为A和B的git本地分支(指向远程分支原点/ A和原点/ B。

Branch - A:

Folder-1
   File-11
   File-12
Folder-2
   File-21
   File-22

Branch - B:
Folder-2
   File-22
   File-23
Folder-3
   File-31
   File-32

我想将分支B与分支A合并。

git checkout A
git merge B

最终的结果应该是这样的。

Branch - A:
Folder-1
   File-11
   File-12
Folder-2
   File-21
   File-22 (Branch -A file).
Folder-3
   File-31
   File-32

单独合并文件夹-3,将文件夹-1和文件夹-2保留在分支A中。

基本要求是,我不应该丢失日志(和提交)历史记录。

怎么做?

提前致谢。

3 个答案:

答案 0 :(得分:6)

如果您只想将Folder-3的内容从分支B添加到分支A,并且不关心使此提交成为合并提交,这是一个简单的方法这样做:

# from branch A :
git checkout A

# say "get me the content of Folder-3 from branch B" :
git checkout B -- Folder-3/

# and commit this new content on top of branch A :
git commit

如果要将提交标记为合并提交,请执行以下操作:

# from branch A :
git checkout A

# say "start a merge commit, I initially want to only keep the content of A" :
git merge -s ours --no-commit B
  # -s ours : keep current branch content (current branch is A)
  # --no-commit : do not run the 'git commit' command yet, I will do it later

# say "get me the content of Folder-3 from branch B" :
git checkout B -- Folder-3/

# and commit this new content on top of branch A :
git commit

答案 1 :(得分:1)

试试这个:

$ git checkout branchB
$ git checkout -b branchC
$ rm -rf folderA and folderB //pseudocode. Remove folder A and B
$ git checkout branchA
$ git merge branchC
$ git add -A
$ git commit -m "Added folderC"
$ git push

$ git branch -d branchC

答案 2 :(得分:0)

git checkout B
git add Folder-3
git add Folder-2/File-23
git checkout -- Folder-2/File-22
git comit -m "add Folder-3"
git checkout A
git merge B