有沒有辦法設置git存儲庫,以便git pull
默認爲一個遠程,並且git push
默認爲另一個?我知道我可以通過更改分支部分.git/config
中的remote
變量的值來設置和,但是如何分別爲每個方向執行此操作?git pull和git push的不同默認遠程(跟蹤分支)
回答
對於Git 1.6.4及更高版本,請將remote.<name>.pushurl
設置爲git config。
人們可能會使用它來拉動使用只讀https:
協議,並推送使用基於SSH的協議。
說origin
的URL(remote.origin.url
)是https://git.example.com/some/repo.git
。它是隻讀的,但您可以通過基於ssh的「URL」[email protected]:some/repo.git
進行寫入訪問。運行以下命令,以推動效果通過基於SSH協議:
git config remote.origin.pushurl [email protected]:some/repo.git
從我可以從git config man page聚集,上游回購是:
- 默認原點都
git pull/fetch
和git pull
設置由branch.remote
對於git v1.8.3.2,在嘗試git config remote ...和git remote set-url ...答案後,對於單個分支或整個分支,這似乎是真實的回購的副本。 – 2013-08-29 03:13:13
將默認遠程設置重置爲當前分支的「origin」,並從匹配的分支名稱push push/pull到/ from git push --set-upstream origin
由於Git版本1.7.0,可以將此與:
git remote set-url --push origin https://your.push.com/blah/
比問題晚3年,但這應該是新接受的答案! – Kevlar 2013-09-25 20:47:34
@Kevlar爲什麼?接受用於標記並不總是「最好」的答案,但是爲OP制定的答案(閱讀FAQ以獲取更多信息)。在提出問題的時候,答案是行不通的(甚至不存在),因爲git早於1.8。但是接受的答案確實爲OP做好了準備。你在三年後改變OP的決定的理由是什麼? – trejder 2013-12-06 10:26:53
@trejder Stack Overflow也是一個爲未來訪問者提供有用答案的地方,他們可以通過搜索引擎或其他方式找到問題。現在最好的答案首先出現是很有價值的。我並不是說OP *必須*改變接受的答案,但是這樣做是完全合理的(並且在我看來是淨積極的)。 – amalloy 2015-08-20 00:30:21
這個工作在1.7.1及以上 -
git remote set-url --push origin [email protected]:username/somerepo.git
由於Git的1.8.3,您可以使用remote.pushDefault
選項做你想要什麼(即具有不同的默認遙控器爲pull
和push
)。您可以像其他任何設置一樣來設置選項;例如,將其設置爲pushTarget
遙控器,使用
git config remote.pushDefault pushTarget
此選項將具有以下效果:
git pull
將拉動從遠程指定由在相關分支部remote
選項.git/config
,而git push
將推送到由remote.pushDefault
指定的遠程。
請注意,您需要指定名稱遠程而不是URL。這使得該解決方案比涉及remote.<name>.pushurl
的解決方案更靈活,因爲(例如)您仍然會爲兩個遙控器都追蹤分支。無論您是需要還是希望這種靈活性都取決於您。
The release notes表示此選項專門用於支持三角形工作流程。
奇怪:我以爲你只是向上遊推銷,而你不知道有多少下游回購正在從你身上拉下來:請參閱http://stackoverflow.com/a/2749166/6309 – VonC 2015-07-02 19:12:17
@VonC啊,是的,我明白了爲什麼它很混亂。我通常會調用遠程我想*從*默認'上游',因爲......呃......它是在我的存儲庫上游,在這些拉動。但是選項是'pushDefault',而不是'pullDefault',所以我在例子中使用'downstream'作爲名稱。這可能是一個更好的主意,稱爲「defaultPushTarget」;) – MvanGeest 2015-07-02 19:28:30
@MvanGeest我同意。但我確認你通常會推向「上游」。有一個(或很少和已知的)上游。但是可能會有很多(和未知的)下游。這就是DVCS(如「分佈式」)宇宙。 – VonC 2015-07-02 19:34:30
- 1. git push/pull - 默認爲github
- 2. Git跟蹤遠程分支,並推送到不同的分支
- 3. git:跟蹤多個遠程分支
- 4. 如何跟蹤遠程git分支?
- 5. Git-跟蹤遠程分支機構
- 6. Git安裝遠程跟蹤分支
- 7. git:如何指定一個默認的遠程push-to分支?
- 8. Git分支-m和遠程跟蹤分支
- 9. 確保git遠程跟蹤分支與遠端保持同步
- 10. git默認遠程分支與gitolite
- 11. 從錯誤的遠程分支git pull
- 12. 讓現有的Git分支跟蹤JGit的遠程分支?
- 13. 如何讓現有的git分支跟蹤遠程SVN分支?
- 14. 如何將git分支轉換爲遠程跟蹤的分支?
- 15. 如何讓現有的git分支跟蹤遠程分支?
- 16. 從遠程分支的pull rebase是不同的git fetch + rebase
- 17. 跟蹤Git上的分支?
- 18. 瞭解git pull和git fetch
- 19. Git推不工作,但git pull在遠程分支上
- 20. git遠程跟蹤分支推新分支
- 21. git push NOT當前分支到遠程
- 22. git pull會影響遠程追蹤分支嗎?
- 23. git - 不能做一個遠程跟蹤分支
- 24. git push和git pull有什麼區別?
- 25. git pull當前追蹤分支
- 26. 使用git自動跟蹤遠程分支
- 27. 'git pull'的默認行爲
- 28. xcode git pull/push crash
- 29. git merge,push,pull confusion
- 30. git submodule commit/push/pull
如何推送到say'開發「分支並從同一個遠程+裸Git倉庫中的'生產'分支拉來? – Ninad 2015-07-23 12:36:20