[英]pull from one git branch, push into another
我有一個本地 BitBucket 服務器,我將我的更改從 Web UI 合並到主服務器。 我想與一個永久的個人分支合作,我將定期從中創建合並請求。
我希望git pull
將origin/master
合並到我的本地master
,並git push
將我的本地 master 推送到origin/itsadok
。 然后我將在服務器上創建一個合並請求,並將我的更改從origin/itsadok
合並到origin/master
。
BitBucket server: origin/itsadok --- via PR --> origin/master
↑ |
Local machine: \---------- master <---------/
看起來很簡單。
我知道我可以手動執行git push origin master:itsadok
,但我希望它是默認值。 似乎設置默認推送目標的唯一方法是將branch.master.merge
配置為refs/heads/itsadok
(並將push.default
配置為upstream
),但是 pull 也會從我的個人分支合並。
有沒有辦法配置 git 以便默認推送和拉取將按上述方式工作?
編輯:我想到我可以通過將push.default
設置為current
、將本地分支命名為與遠程個人分支相同的名稱並將branch.itsadok.merge
設置為 refs/heads/master 來實現非常相似的功能。 換句話說:
BitBucket server: origin/itsadok --- via PR --> origin/master
↑ |
Local machine: \---------- itsadok <--------/
這幾乎有效,但是因為我的腳本假設我的本地分支稱為master
,所以這個解決方案對我來說相當不方便。 不過,如果沒有其他想法,我會滿足於此。
您可以通過正確映射推送引用規范來實現所描述的行為。 如push manual 中所述,git 按以下順序查看要推送的內容:
remote.<remote_name>.push
配置如果不為空push.default
配置所以你可以讓master
跟蹤origin\\master
,所以拉動工作正常,然后配置remote.origin.push
,所以不帶參數的推送適合你的工作流程:
git config remote.origin.push refs/heads/master:refs/heads/itsadok
您可以通過打印與上游分支檢查配置git rev-parse --symbolic-full-name @{upstream}
與推分支git rev-parse --symbolic-full-name @{push}
但是,有幾個警告:
git status
會將 master 與其上游進行比較,因此即使在實際推送提交之后,您也會看到“提前 1 次提交”通知。git push
,而在非 master 分支上仍然會將數據從 master 推送到 itadok。 如果您想嘗試修復此問題,最好的開始方法可能是refspec 配置示例
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.