2015-06-05 288 views
4

我有一個提交id,目前它不屬於任何分支。它有一個標籤。我如何將此提交推送到服務器?git推一個不屬於任何分支的提交

git show 2.0.rc10 
tag 2.0.rc10 
Tagger: .... 
Date: Fri Mar 29 13:38:55 2013 -0700 
Release 2.0.rc10; merged 
commit f1186bfeb938081f9d57f8ac20667329b1c53111 

,同時運行

git branch -r --contains f1186bfeb938081f9d57f8ac20667329b1c53111 

沒有輸出。

如何推動這一承諾服務器?

git push origin 2.0.rc10 
remote: Tag '2.0.rc10' references unknown objects. Push commits before tags. 
To 
! [remote rejected] 2.0.rc10 -> 2.0.rc10 (pre-receive hook declined) 
error: failed to push some refs to 'remote' 
+2

看起來您在拒絕的服務器上有預接收掛鉤。 – merlin2011

+0

你是從哪一個單獨提交的?是否從分支中刪除了某個點? –

+0

@ merlin2011,是的,預先接收鉤拒絕,問題是「我如何將這樣的提交ID推送到服務器?」這樣我可以推遲標籤 – user2397194

回答

1

你的問題不是混帳,但顯然會檢查提交由分支引用的服務器上預先接收掛鉤。

顯然,一個解決方案是首先把你的分支。我不知道爲什麼你會想要一個沒有分支的標籤。

+0

'git branch -r --contains'的空輸出清楚地表明這個提交沒有分支。 –

0

有問題的提交需要屬於一個分支才能將其提交到遠程存儲庫。假設您要提交成爲分支稱爲yourbranch那麼下面應該做的伎倆:

git checkout yourbranch  # checkout the desired branch 
git merge f1186bfe   # merge in the single commit 
git push origin yourbranch # push the branch out (with new commit) to the remote 

有可能合併,你將不得不解決衝突。你應該確定你確實需要這個提交。你可以把它用檢查:

git show f1186bfe 

您可以確保您想要的標籤仍然在犯:

git show 2.0.rc10 

驗證SHA-1散列相匹配的提交要保存,然後通過這個標籤推送到遠程:

git push origin 2.0.rc10 
+0

是否有必要將所有提交到服務器上的提交屬於某個分支。如果(大小寫)他們只有標籤關聯(但不是分支)呢?我在導入的代碼中有幾個這樣的標籤,有沒有辦法「git push --tags」可以至少排除所有這樣的標籤? – user2397194

+0

AFAIK你不能推送沒有關聯分支的提交。默認情況下,Git標籤不會被提交,所以你不需要做任何特殊的事情來排除標籤,只是不要推送它們。 –

+2

不,所有提交都不必從分支可達。從標籤可以達到也很好。你可以使用'git push --tags'來推送所有標籤,是的;不僅僅是那些在分支上的人,而是所有人。 – poke

0
git push origin 2.0.rc10 

實際上是推動你的提交的命令。由於提交被標記2.0.rc10引用,因此它被推送沒有問題。當遠程,使用之前你送什麼,拒絕它(pre-receive hook declined)。您需要修改前收到鉤或推東西,你的鉤接受

你的錯誤出現。 More info about hooks

一些測試

重新創建OP的情況:

git checkout --orphan orphan_branch 
git commit -am "stray commit" 
git tag -a 2.0.rc10 -m "2.0.rc10" 
git checkout master 
git branch -D orphan_branch 

雜散承諾:

git show 2.0.rc10 
tag 2.0.rc10 
Tagger: ... 
Date: Fri Jun 5 11:41:11 2015 +0200 

2.0.rc10 

commit 78e06b3a4841f88c1737ab8986fd6f3d753e1735 
Author: ... 
Date: Fri Jun 5 11:41:00 2015 +0200 

    stray commit 

showing the stray commit

推送:

git push origin 2.0.rc10 
Username for ... 
Password for ... 
Counting objects: 2, done. 
Delta compression using up to 4 threads. 
Compressing objects: 100% (2/2), done. 
Writing objects: 100% (2/2), 305 bytes | 0 bytes/s, done. 
Total 2 (delta 0), reused 0 (delta 0) 
To ... 
* [new tag]   2.0.rc10 -> 2.0.rc10 

因此,提交被推送,標籤在遠程創建,因爲我沒有預先接收掛鉤,它的推送沒有問題。

+0

這不會將遠程提交到遠程存儲庫中。 –

+0

是的,請參閱編輯 – vguzmanp