Git分支过滤选定的文件

标签 git branch

我有一个分支的一些提交,并希望创建到另一个分支,但仅针对某些文件。

我们来吧

git checkout mybranch

ma​​ster切换到mybranch,并且已经存在一些将更改应用于不同文件的提交。

现在我想创建一个分支,在其中看到类似的提交,但这次仅对我选择的文件进行更改。我怎样才能做到这一点?

我的想法是接受每次提交并为每个提交创建第二次提交,其中会显示所选文件的更改。但这可能会导致大量的手动工作,具体取决于您有多少提交。我也怀疑这些以后是否可以轻松 merge 。

仅 merge 所选文件的更改的最佳方法是什么?这可能吗?

最佳答案

您可以使用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分支过滤选定的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62463619/

相关文章:

git - Git 推送后在接收后 Hook 中运行 Gulp

Git:如何 merge 多年来分歧很大的复杂分支

git - 撤消 Git 跟踪命令

git - 通过 Ansible 应用 git 补丁的最佳方法

python - 如何忽略 git 存储库中的 PyCharm 配置文件?

git - 中止 Git merge

git - 使用Git从 "Repo"仓库同步一个项目

git - git 中的这个分支跟踪(如果有的话)是什么?

git - 在git中,有没有一种简单的方法可以将不相关的分支引入到存储库中?

c# - 微软git上 "Edited in both"冲突如何解决?