2011-06-08 253 views
46

民間,git推送到遠程分支

我已經克隆回購。我創建了一個分支出來的它在功能工作發出以下命令:

git branch fix78

然後我通過

git checkout fix78

分支上工作,我繼續做提交本當地分支。現在我想推動這回購,因此我發出以下命令:

git push origin master:fix78

我從Web瀏覽器查看回購,發現了一個名爲fix78新的分公司在回購創建。但它沒有我提交的任何提交。

我在這裏做錯了什麼?這是我想要實現的:

有一個回購(主要(SVN行話中的主幹)),現在當我在一個功能上工作我想創建一個本地分支,然後我也想檢查這個分支到回購站點(以便其他團隊成員可以看到我在做什麼),然後我希望我的本地分支與我創建的這個遠程分支同步。

任何幫助/反饋將是非常棒的。

謝謝。

回答

60

git push origin master:fix78將本地主服務器推送到名爲fix78的遠程分支。你想推動地方分支機構fix78,它具有相同的語法,但沒有master:

您可以通過執行git push origin :fix78刪除遠程分支解決它,然後git push origin fix78到本地分支推送到遠程的回購。

+0

真棒,非常感謝,我完全理解混帳推主產地的區別:fix78和git推起源:fix78 – Rubyalto 2011-06-08 13:10:04

+0

@Rubyalto請接受這個答案... – Bzazz 2015-11-25 18:12:47

51

推命令有

git push remote_name source_ref:destination_ref 

所有你需要做的,糾正你的錯誤形式是

git push origin +fix78:fix78 

加號表示你不關心這個分支可能會丟失歷史因爲之前的推送是一個錯誤。

替代語法是

git push -f origin fix78 

如果省略了目的地,它暗示了它的同名。如果跟蹤設置到遠程的特定分支,它將轉到該分支。刪除分支有2個語法,老:

git push -f origin :fix78 

git push --delete origin fix78 

首先是讀作 「推什麼到fix78」 也就是刪除它。

一個竅門是,如果您指定.作爲遠程名稱,則意味着當前回購作爲遠程。這對於更新本地分支而不必檢查它是有用的:

git push . origin/master:master 

將更新主設備而不必檢出主設備。

希望這有助於

+0

感謝,這有助於。 – Rubyalto 2011-06-08 19:40:49

+0

確實,這有幫助。感謝您的發表! – 2012-12-27 16:18:18