Git 分支筛选所选文件
Git branch filter selected files
我有一个分支的一些提交,想创建到另一个分支,但只针对某些文件。
让我们
git checkout mybranch
从 master 切换到 mybranch 并且已经存在一些将更改应用到不同文件的提交。
现在我想创建一个分支,我可以在其中看到类似的提交,但这次只更改了我选择的文件。我该怎么做?
我的想法是获取每个提交并为每个提交创建第二个提交,其中显示选定的文件更改。但这可能会导致大量手动工作,具体取决于您有多少次提交。我也怀疑这些以后可以很容易地合并。
仅合并所选文件的更改的最佳方法是什么?有可能吗?
What is the best way to merge only changes of selected files? Is it even possible?
在你的第二个分支中,你所要做的就是仅为那些文件创建更改(并提交所述更改)。
即使您的第二个分支将拥有所有文件,当您将其合并回 master 时,只会合并您修改和提交的文件。
您可以使用 git filter-branch
重写您的分支的一部分。
在你的情况下,你可以使用 --index-filter
:
# create a copy of your branch :
git branch extracted mybranch
git checkout extracted
# all flavors of git filter-branch basically take a script to apply on each commit
git filter-branch --index-filter 'git reset HEAD && git add [the files you want]'
master..extracted
您还可以查看 git-filter-repo
等工具
我有一个分支的一些提交,想创建到另一个分支,但只针对某些文件。
让我们
git checkout mybranch
从 master 切换到 mybranch 并且已经存在一些将更改应用到不同文件的提交。
现在我想创建一个分支,我可以在其中看到类似的提交,但这次只更改了我选择的文件。我该怎么做?
我的想法是获取每个提交并为每个提交创建第二个提交,其中显示选定的文件更改。但这可能会导致大量手动工作,具体取决于您有多少次提交。我也怀疑这些以后可以很容易地合并。
仅合并所选文件的更改的最佳方法是什么?有可能吗?
What is the best way to merge only changes of selected files? Is it even possible?
在你的第二个分支中,你所要做的就是仅为那些文件创建更改(并提交所述更改)。
即使您的第二个分支将拥有所有文件,当您将其合并回 master 时,只会合并您修改和提交的文件。
您可以使用 git filter-branch
重写您的分支的一部分。
在你的情况下,你可以使用 --index-filter
:
# create a copy of your branch :
git branch extracted mybranch
git checkout extracted
# all flavors of git filter-branch basically take a script to apply on each commit
git filter-branch --index-filter 'git reset HEAD && git add [the files you want]'
master..extracted
您还可以查看 git-filter-repo