如何通过稀疏结账进行 git-rebase?

aby*_*s.7 5 git git-rebase sparse-checkout

我有一个启用了稀疏结帐的工作副本。我想做的git rebase -i。但是,如果我在变基时遇到冲突,所有从签出文件中排除的文件都标记为deletednot staged for commit

因此,当我确实解决实际冲突和所需文件时,由于未暂存的更改,git add我仍然无法完成。git rebase --continue我可以git checkout -f -- <excluded files>,但是很不方便。

git-rebase有没有更好的稀疏结账方法?

Von*_*onC 1

我在“ Git稀疏结帐与排除”中提到过,你现在有了这个git sparse-checkout命令
我所说的“现在”是指自 Git 2.25+(2020 年第一季度)以来。

而且,正如我在“启用后如何禁用稀疏结帐? ”中记录的那样,您可以禁用/重新启用稀疏结帐。

由于使用稀疏签出进行变基比较棘手(因为变基操作适用于整个历史记录,而不仅仅是工作目录中的文件),因此您可以考虑禁用/启用方法(使用比 2015 年更新的 Git 版本)一):

git branch backup-branch
git sparse-checkout disable
git rebase -i <base-branch>

# Resolve them as you normally would.
# After resolving, stage the changes: 
git add <resolved-files>
git rebase --continue

# Re-enable the sparse-checkout
git sparse-checkout set <paths-or-patterns>
# Replace `<paths-or-patterns>` with the paths or patterns you had previously used.
Run Code Online (Sandbox Code Playgroud)

如果出现任何问题,您可以随时切换回您的backup-branch重新开始。