各种各样,我可能需要运行:
git rebase --continue
git cherry-pick --continue
git revert --continue
在每种情况下,我的命令行都提醒我我处于中间位置(rebase / cp / revert),因此我很清楚它知道哪个处于活动状态。
因此,感觉在概念上可能存在一个命令git continue
,它将继续执行当前正在执行的任何操作,从而节省了一些乏味的输入?
答案 0 :(得分:3)
据我所知,这样的命令不存在。但是,您可以为此创建一个脚本,例如begin_iterator = buf.begin(); end_iterator = buf.cend();
std::whatever(begin_iterator, end_iterator);
:
git-continue
将脚本放在#!/usr/bin/env bash
repo_path=$(git rev-parse --git-dir 2>/dev/null)
if [ -d "${repo_path}/rebase-merge" ]; then
git rebase --continue
elif [ -d "${repo_path}/rebase-apply" ]; then
git rebase --continue
elif [ -f "${repo_path}/MERGE_HEAD" ]; then
git merge --continue
elif [ -f "${repo_path}/CHERRY_PICK_HEAD" ]; then
git cherry-pick --continue
elif [ -f "${repo_path}/REVERT_HEAD" ]; then
git revert --continue
fi
中的某个位置,然后可以使用$PATH
。
请注意,您可能还需要覆盖类似git continue
的标志,例如--continue
,--abort
,--skip
。
答案 1 :(得分:2)
除了@alfunx的答案,我可能会建议您进行以下更改:
我没有执行repo_path=$(git rev-parse --git-dir 2>/dev/null)
,而是忽略了git的返回代码和日志,而是将脚本更改为此:
#!/usr/bin/env bash
repo_path=$(git rev-parse --git-dir)
if [ $? -ne 0 ]; then
exit $?
fi
if [ -d "${repo_path}/rebase-merge" ]; then
git rebase --continue
elif [ -d "${repo_path}/rebase-apply" ]; then
git rebase --continue
elif [ -f "${repo_path}/MERGE_HEAD" ]; then
git merge --continue
elif [ -f "${repo_path}/CHERRY_PICK_HEAD" ]; then
git cherry-pick --continue
elif [ -f "${repo_path}/REVERT_HEAD" ]; then
git revert --continue
else
echo "No something in progress?"
fi
现在该脚本...
128
不是git存储库等)和来自git二进制本身的错误消息(例如fatal: not a git repository (or any of the parent directories): .git
)echo "No something in progress?"
,如果什么都没有发生。