git 如何拥有一个子分支机构,并使其与母分支机构保持同步?

xxe27gdn  于 2023-01-11  发布在  Git
关注(0)|答案(1)|浏览(187)

我想有两个分支:mainsub
假设main分支的文件夹结构如下:

.
├── folder_1/
│   ├── folder_1.1/
│   │   └── file.txt
│   └── folder_1.2/
│       ├── file.txt
│       └── another_file.txt
└── folder_2/
    ├── folder_2.1/
    │   └── file.txt
    └── index.txt

然后我希望sub分支只包含main分支中folder_2的内容,所以sub分支结构应该是这样的:

.
├── folder_2.1/
│   └── file.txt
└── index.txt

我想让sub分支和main分支的folder_2保持同步,可以自动更新,也可以手动更新使用git命令更新
显然,我希望这两个分支在同一个存储库中。
我有什么办法可以做到吗?

dsekswqp

dsekswqp1#

其中一个解决方案是git subtree split,我不知道为什么git subtree似乎被弃用了,而且在https://www.git-scm.com/docs/git#_git_commands上找不到它的手册,尽管git subtree --help仍然可以在本地工作。
main创建sub

git branch sub $(git subtree -P folder_2 split main)

git subtree部分创建一个新的历史并返回它的头,新的提交是从main中的那些提交创建的,并且涉及目录folder_2
必要时更新sub

git checkout sub
newhead=$(git subtree -P folder_2 split main)
git merge $newhead
# Here we cannot use "git merge $(git subtree -P folder_2 split main)" for short,
# as it would raise an error complaining that "folder_2" does not exist

您可以提交sub上的其他更改,但这可能会在下次合并时导致冲突。如果有任何冲突,请照常解决。

相关问题