如何用一条命令完成git fetch、checkout和pull操作?

4

每次在本地测试我的团队成员的代码时,我需要运行3个命令。

如下:

git fetch remote_name branch_name 
git checkout branch_name
git pull origin master

git fetch remote_name branch_name && git checkout branch_name 等等...

通常情况下,在我们从远程仓库拉取(fetch)代码后,我们往往需要切换(checkout)到特定的分支(branch),然后再从远程主分支(origin master) pull代码。如果可以通过一条命令完成以上所有步骤,将会更快捷方便。

是否有Git命令来解决这个问题?


创建一个批处理文件?使用类似 git extensions 的用户界面吗? - Liam
1
你也可以创建一个别名。 - Víctor López
@Liam,我在Ubuntu上使用git bash。 - Kakada NEANG
1
@KakadaNeang 可以像 @Víctor López 建议的那样创建别名,或在 ~/.bashrc 中定义一个简单的函数。function foo(){ git fetch remote_name branch_name && git checkout branch_name && git pull origin master },然后运行 foo 即可完成任务。如果 remote_namebranch_name 不是常量,请在函数中用 $1$2 替换它们,并运行 foo remote_name branch_name。编辑完 ~/.bashrc 后,需要通过 source ~/.bashrc 或重新启动 shell 窗口来使其生效。 - ElpieKay
如果您在问题中提及此事并/或添加相关标签,那将会很有帮助。 - Liam
这种组合的另一个好处是避免冲突。例如,如果您切换回旧的主分支并且有一些本地修改的文件,但当前的主分支与您已经拥有的内容相似。出于这个原因,git checkout 经常失败,我不得不执行以下操作:git stash && git checkout master && git pull && git stash pop(我省略了 git fetch,因为这已经由 git checkout 执行)。 - Daniel Alder
1个回答

3

如果你经常使用这个命令组合,建议像@ElpieKay建议的那样将该函数添加到你的shell中。例如,如果你使用bashdash,则将以下代码添加到你的~/.bashrc中,就可以输入foo remote_name branch_name,这等同于你问题中的语句。

function foo {
    git fetch $1 $2 && git checkout $2 && git pull origin master
}

如果您更喜欢键入 git foo remote_name branch_name,则可以创建多语句 git 别名,如此问题中所述。


为什么不直接使用 git pull 呢?我从来不写 git pull origin master。你缩短了其他命令也很好。问题所在,就是不需要将分支名称作为参数传递。 - questionto42

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接