2

在过去的几天里,我花了相当多的时间来阅读线程,但仍然没有找到一个像样的答案。

如果我在功能分支中工作,几天后我想从 master 中提取最新更改,我运行命令:

git stash; and git checkout master; and git pull origin master; and git checkout <FEATURE BRANCH>; and git merge master; and git stash apply;

如果这看起来有点不对劲,那是因为我使用的是 Fish 而不是 Bash。只需将所有替换; and&&使其在 Bash 中工作即可。

无论如何,我想要一个名为“remaster”的 git 别名,它会自动为我执行此操作,以便在我键入git remaster时触发所有这些命令。最大的挑战是获取功能分支的名称并将其保存以供我们稍后重新检查时使用。

任何人有任何方法可以做到这一点或任何想法?

4

2 回答 2

3

您可以通过与 origin/master 合并来减少命令的数量,如下所示:

git stash
git fetch origin
git merge origin/master
git stash pop

您可以基于此制作宏:

[alias]
remaster = "!f() { git stash && git fetch origin && git merge origin/master && git stash pop }; f"
于 2013-06-28T16:17:27.793 回答
3

您可以git fetch使用git merge origin/master.

该别名适用于bash,因此您可能想将其移植到fish

[alias]
    remaster = "!f() { git stash && git fetch origin && git merge origin/master && git stash apply; }; f"

但无论如何,当前分支名称可以通过git rev-parse --abbrev-ref HEAD.

于 2013-06-28T16:17:56.010 回答