【问题标题】:One-liner for git rebase and git pullgit rebase 和 git pull 的单线
【发布时间】:2022-01-06 07:21:37
【问题描述】:

是否有一个用于拉分支并重新定位到它的单行代码?

例如,在处理feature 分支时,签出master,拉取更改,然后签出到feature,然后再运行git rebase master

# currently on feature branch
git checkout master
git pull
git checkout feature
git rebase master

这个单线是什么?

【问题讨论】:

  • git fetch && git rebase origin/master 相当于问题中的内容。如果您调整工作流程以不涉及不必要的本地分支机构,那就简单多了。
  • 嗯,有时想要一个单行字意味着您想要更短的键入,而没有更深入地了解核心问题,并且可能会用一流的术语重新思考它。我会在本地删除主分支,然后简单地执行git fetch origin 以从远程存储库中获取更改,然后通过简单的git rebase origin/master 将当前分支重新设置在基础分支之上。不是真正的 oneliner,而是使用一流的 git 命令而不进行结帐,也不会创建越来越多的命令来使它们成为 oneliner。
  • 有点。你很可能仍然想要一个本地主分支——但它的存在/不存在在这里不是一个因素,因为它没有被引用。同样git checkout -b new-thing origin/master 从远程分支创建一个新分支,并且再次对本地主分支的存在无动于衷。
  • 有点题外话:我个人不太喜欢oneliners、aliases或git-scripts:它们引入了作者思考问题的理性模型,而且它们不是那么“可扩展”(在一台新机器上,结对编程,远程外壳等,一个人要么复制他/她的 git 工具包,要么使用 git 内置插件,如果前者是不可能的)。我将它们用于或多或少复杂的任务(例如将 git 工作通过管道传输到其他工具),而且我从不记得我的整个 git 工具包,当然也没有在线文档。这就是为什么我更喜欢尽可能使用 git 一流的命令。

标签: git rebase


【解决方案1】:

在同一个分支上拉取和变基:

git pull --rebase

master 拉取并将feature 变基为master

git pull --rebase origin master:master

注意:我不确定这是否适用于非快进变基。


如果你经常这样做,你可以创建一个shell别名:

gprb() {
  local branch_a="$1"
  local branch_b="$2"
  git checkout "$branch_a" && \
  git pull && \
  git checkout "$branch_b" && \
  git rebase "$branch_a"
}

用法:

gprb master feature

【讨论】:

  • 不会git pull --rebase 仅将您重新定位到远程跟踪分支,即 origin/feature-branch?
  • @eja :如果您明确指定从远程提取哪个分支,则不会。
猜你喜欢
  • 2021-11-17
  • 2014-10-15
  • 2017-12-07
  • 1970-01-01
  • 2018-03-05
  • 2021-02-05
  • 2021-08-16
  • 2015-03-21
  • 2011-09-11
相关资源
最近更新 更多