结帐,提款,结账,合并/转扣的Git快捷方式

cod*_*ugh 3 git shortcut git-merge git-checkout git-branch

假设我有2个分支,master和codyDev.在我开始对codyDev进行更改之前,我会执行以下操作以确保我从codyDev上的最新主提交开始:

git checkout master
git pull
git checkout codyDev
如果改变, git merge master

前3个步骤是否有快捷方式,所以我不必离开我的codyDev分支?我倾向于发现主人没有更新,结账/拉/结账是3个不必要的命令.

请注意,我让Google试图找到我的问题的答案,但似乎有各种各样的潜在和有些复杂的解决方案.看起来最吸引人的是影响的东西git fetch origin master:master,但我读到的解释并不是很清楚,因为这些例子有点复杂.我也发现自己想知道"为什么要取而不是拉"(即git pull origin master:master)?

Tim*_*sen 7

您可以codyDev使用最新更改来更新分支,master而无需实际更改分支:

git checkout codyDev      # ignore if already on codyDev
git fetch origin          # updates tracking branches, including origin/master
git merge origin/master   # merge latest master into codyDev
Run Code Online (Sandbox Code Playgroud)

这里的诀窍是将最新版本合并mastercodyDev您实际上并不需要更新您的本地master分支.相反,您可以只更新远程跟踪分支origin/master(通过git fetch),然后将其合并.

您也可以直接master使用本地分支更新本地分支,git fetch而无需实际签出本地master分支:

# from branch codyDev
git fetch origin master:master
Run Code Online (Sandbox Code Playgroud)

但是,这仅在合并是本地master分支的快进时才有效.如果合并不是快进,那么这将不起作用,因为在出​​现合并冲突的情况下需要工作目录.

请阅读此处了解更多信息.


swe*_*ner 7

您可以为您添加别名~/.gitconfig.

[alias]
start = !git checkout master && git pull origin master && git checkout -b
Run Code Online (Sandbox Code Playgroud)

或者运行它以从命令行添加它:

 git config --global alias.start '!git checkout master && git pull origin master && git checkout'
Run Code Online (Sandbox Code Playgroud)

此外,从上面的代码可能不太清楚,但请确保后面有空格-b.

您也可以省略-b并传递它,以便您可以选择在现有分支上操作.在这种情况下,您将拥有:

[alias]
start = !git checkout master && git pull origin master && git checkout 
Run Code Online (Sandbox Code Playgroud)

然后打电话给它

git start -b newBranch
Run Code Online (Sandbox Code Playgroud)

要么

 git start existingBranch
Run Code Online (Sandbox Code Playgroud)