git 在一个命令(或几个命令)中执行拉、变基、推送

vfwfrxfs  于 2023-02-11  发布在  Git
关注(0)|答案(3)|浏览(143)

在使用Git时,我经常发现自己在master中工作时会执行以下操作:

# work work work...
$ git checkout -b temp
$ git commit -a -m 'more work done'
$ git checkout master
$ git pull origin master
# turns out master was updated since my previous pull
$ git checkout temp
# I don't want a merge commit for a simple bugfix
$ git rebase master
$ git checkout master
$ git merge temp
$ git push origin master
$ git branch -d temp

......我已经厌倦了这样做。有没有一种方法可以在没有所有 checkout 的情况下完成这个舞蹈,最好是没有(手动)创建临时分支?

agxfikkp

agxfikkp1#

如果你不介意创建一个名为temp的分支,你可以在master上做以下所有的事情:

git commit -a -m 'more work done'
git fetch origin
git rebase origin/master

......或同等:

git commit -a -m 'more work done'
git pull --rebase origin master

但是,如果你确实想保留temp分支,你仍然可以通过不 checkout master来做pull来缩短这个过程--你只需要 checkout fetch,然后将分支重定基到origin/master

# work work work...
$ git checkout -b temp
$ git commit -a -m 'more work done'
$ git fetch origin
# It looks like origin/master was updated, so:
$ git rebase origin/master
# Then when you finally want to merge:
$ git checkout master
$ git merge temp
$ git push origin master
$ git branch -d temp

sehe的回答提醒我,你可以替换:

$ git fetch origin
$ git rebase origin/master

...与:

$ git pull --rebase origin master

...这几乎是等价的。不同之处在于,当您运行git fetch origin时,origin的所有远程跟踪分支都将被更新,而当您从origin提取特定分支时,它们都不会被更新-只是临时ref FETCH_HEAD被更新。我个人更喜欢运行一个额外的命令(git fetch origin),并查看输出中发生更改的所有远程分支。

kkbh8khc

kkbh8khc2#

您至少可以优化重定基准:git pull --rebase
我不知道你喜欢什么样的工作,但我喜欢我的工作流程是这样的:

git checkout -b temp
git commit -a -m 'more work done'
git pull --rebase origin master

这样我就能把注意力集中在手边的分支上。
后来,我知道了

git checkout master
git pull origin master
git merge temp

等等。

7kjnsjlb

7kjnsjlb3#

git pull --rebase --autostash origin staging && git push origin staging;

相关问题