4 个版本 (2 个破坏性更新)
0.8.0 | 2024年8月2日 |
---|---|
0.7.0 | 2023年7月5日 |
0.6.1 | 2022年11月7日 |
0.6.0 | 2022年9月25日 |
#4 in #git-branch
每月110次下载
125KB
1.5K SLoC
📚 restack
restack 丰富了交互式 Git rebase 的体验,使其更适合涉及众多相互依赖分支的工作流程。
有关此工具为何存在及其促进的工作流程的更多背景信息,请参阅 自动重排 Git 分支。
安装
使用以下任一选项安装 restack。
-
如果您在 macOS 或 Linux 上使用 Homebrew,请运行以下命令以下载并安装预构建的二进制文件。
brew install abhinav/tap/restack
-
如果您使用 ArchLinux,请使用 AUR 中的 restack-bin 软件包安装预构建的二进制文件或使用 restack 软件包从源代码构建。
git clone https://aur.archlinux.org/restack-bin.git cd restack-bin makepkg -si
使用 AUR 辅助工具(如 yay),请运行以下命令代替
yay -S restack-bin # pre-built binary yay -S restack # build from source
-
从 GitHub 发布页面 下载预构建的二进制文件并将其放置在您的
$PATH
中。 -
如果您已安装 Rust,则可以从源代码构建。
cargo install restack
设置
restack 通过将自己安装为 Git sequence.editor
来工作。您可以手动设置此选项,也可以让 restack 自动设置。
自动设置
运行 restack setup
以配置 git
以使用 restack
。
restack setup
手动设置
如果您不希望 restack 修改您的 .gitconfig
,则可以通过运行以下命令手动设置:
git config sequence.editor "restack edit"
请查看 restack edit --help
了解 restack edit
接受的不同选项。
用法
restack 会自动识别被 rebase 操作影响的分支,并添加 rebase 指令以更新这些分支,当它们的头部分支移动时。
生成的指令列表还包括一个可选的注释部分,该部分会将这些分支推送到远程。
例如,给定:
o master
\
o A
|
o B (feature1)
\
o C
|
o D (feature2)
\
o E
|
o F
|
o G (feature3)
\
o H (feature4, HEAD)
从分支 feature4
运行 git rebase -i master
将给出以下指令列表。
pick A
pick B
exec git branch -f feature1
pick C
pick D
exec git branch -f feature2
pick E
pick F
pick G
exec git branch -f feature3
pick H
# Uncomment this section to push the changes.
# exec git push -f origin feature1
# exec git push -f origin feature2
# exec git push -f origin feature3
所以,在每次 exec git branch -f
之前所做的任何更改将成为该分支的一部分,而后续的所有更改都将基于该分支进行。
致谢
感谢 @kriskowal 初始时将该工具作为脚本实现。
常见问题解答
我可以将 restacking 设置为可选吗?
如果您不希望 restack 在每次 git rebase
时都执行操作,您可以通过引入一个新的 Git 命令将其设置为可选。
为此,首先确保您没有为常规的 git rebase
设置 restack。
git config --global --unset sequence.editor
接下来,创建一个名为 git-restack
的文件,并包含以下内容。
#!/bin/bash
exec git -c sequence.editor="restack edit" rebase -i "$@"
将其标记为可执行,并将其放置在 $PATH
的某个位置。
chmod +x git-restack
mv git-restack ~/bin/git-restack
从现在开始,您可以通过运行 git rebase
进行常规 rebase,并通过运行 git restack
来运行支持分支 restacking 的 rebase。
依赖项
~2–10MB
~116K SLoC