我正在尝试设置一个自动合并到主控的工作流程。
为此,我在一个名为dev-oshai
的分支上本地工作,并希望始终将服务器推送到服务器上的那个分支:git push
当我想提取更改时,我希望始终从master
中提取它们(CI会自动将所有开发人员的更改更新为master)。
为此我使用命令git pull --rebase origin master
此处有更多背景信息和详细信息:https://medium.com/@OhadShai/git-mono-branch-workflow-pre-tested-commits-4b34949310ad
是否可以将git配置为默认的pull分支为origin master
,以便git pull
可以在不指定分支的情况下工作?
答案 0 :(得分:4)
[remote "origin"]
url = <repo_url>
fetch = +refs/heads/*:refs/remotes/origin/*
[remote "foo"]
url = <repo_url>
push = refs/heads/master:refs/heads/dev-oshai
[branch "master"]
remote = origin
pushRemote = foo
merge = refs/heads/master
rebase = true
这样,在分支master
中,git pull
相当于git pull origin -r master:master
而git push
相当于git push foo master:dev-oshai
。 origin
和foo
的网址相同。
除了true
,branch.master.rebase
可以分配preserve
或interactive
。
当保留时,也将--preserve-merges传递给git rebase以便这样做 运行git不会使本地提交的合并提交变平 拉。
当值为交互式时,rebase以交互模式运行。
答案 1 :(得分:1)
我认为不可能完全改变git pull
的行为。 (除了创建别名)
但你可以减少打字。
首先,在你的gitconfig中设置pull to always rebase。
[pull]
rebase = true
接下来,你可以做一点点破解。将您的遥控器添加为新的本地遥控器,因此您可以使用它两次 例如master。
git remote add master https://example.com/repo.git
获取所有分支
git fetch master
并将dev-oshai
的上游设置为新远程控制器的主控。
git branch --set-upstream-to=master/master
现在你可以通过
从主人那里拉出来git pull master
如果这确实是一个好主意,或者更有说服力而不是有帮助的是你的决定。