如何 git 合并 dev 分支而不触及 --skip-worktree 的配置文件?
How to git merge dev branch without touching configuration files that have been --skip-worktree'd?
我从 dev
分支创建了 branchA
,它包含一些我已经 skip worktree'd 的配置文件。我对非跳过工作树文件进行了额外的更改。我想将这些更改合并回 dev,但不合并 skip-worktreed 文件。做这个的最好方式是什么?
总而言之,这就是我想要做的:
- 将我的更改合并到开发中(但不是配置文件)
- 删除旧分支A
- 创建一个新的 branchB,其中包含更新的开发分支以及来自 branchA 的旧配置文件
我认为稀疏签出可能会这样做,它维护索引和工作树,因此不会签出所选文件并自动将它们标记为跳过工作树。
$ cat >.git/info/sparse-checkout <<\EOD
*
!/configs/*
EOD
$ git config core.sparsecheckout true
$ git checkout
the sparse checkout docs 中的警告很重要,在启用稀疏签出的情况下,签出会更新索引和工作树以匹配所需的状态——因此任何不应签出且索引条目未签出的文件已经标记为跳过的内容被删除(并且它们的索引条目被标记为 git 不再关心你放在那里的内容)。您已经将配置标记为已跳过,所以这应该不是问题,只需注意发生了什么。
我想肯定会在 scratch repo 中尝试对此进行试飞
git clone -s . /tmp/deleteme
除了我自己的 smoketests 之外,我还没有真正使用过稀疏结账。
我从 dev
分支创建了 branchA
,它包含一些我已经 skip worktree'd 的配置文件。我对非跳过工作树文件进行了额外的更改。我想将这些更改合并回 dev,但不合并 skip-worktreed 文件。做这个的最好方式是什么?
总而言之,这就是我想要做的:
- 将我的更改合并到开发中(但不是配置文件)
- 删除旧分支A
- 创建一个新的 branchB,其中包含更新的开发分支以及来自 branchA 的旧配置文件
我认为稀疏签出可能会这样做,它维护索引和工作树,因此不会签出所选文件并自动将它们标记为跳过工作树。
$ cat >.git/info/sparse-checkout <<\EOD
*
!/configs/*
EOD
$ git config core.sparsecheckout true
$ git checkout
the sparse checkout docs 中的警告很重要,在启用稀疏签出的情况下,签出会更新索引和工作树以匹配所需的状态——因此任何不应签出且索引条目未签出的文件已经标记为跳过的内容被删除(并且它们的索引条目被标记为 git 不再关心你放在那里的内容)。您已经将配置标记为已跳过,所以这应该不是问题,只需注意发生了什么。
我想肯定会在 scratch repo 中尝试对此进行试飞
git clone -s . /tmp/deleteme
除了我自己的 smoketests 之外,我还没有真正使用过稀疏结账。