Jak wcisnąć znacznik Git do gałęzi używając refspec?

Chcę wymusić wypchnięcie na przykład mojego znacznika 1.0.0 do mojej gałęzi remote master.

Robię teraz:

git push production +1.0.0:master

I want to force the push, ponieważ zależy mi tylko na tym, aby kod wewnątrz znacznika 1.0.0 był wypychany do gałęzi master w zdalnym repozytorium.

Co robię źle?

Update # 1

Kiedy SSH na mój serwer gdzie jest moje Git repozytorium i wykonuję git branch -l, nie widzę master / align = "left" /

Update # 2

Po uruchomieniu git tag -l ze zdalnego repozytorium Git widzę, że master jest na liście, co oznacza, że gdy uruchomiłem:

git push production 1.0.0:master

Faktycznie popchnął znacznik i utworzono tag o nazwie master zamiast nowy oddział.

Chcę w zasadzie wcisnąć spis treści znacznika 1.0.0 do gałęzi master zdalnego repozytorium Git.

Author: Michael van Rooijen, 2010-10-31

4 answers

Prawdopodobnie zawodzi, ponieważ 1.0.0 jest tagiem z adnotacjami. Być może zauważyłeś następujący komunikat o błędzie:

Error: Trying to write non-commit object to branch refs/heads / master

Znaczniki z adnotacjami mają swój własny, odrębny typ obiektu, który wskazuje na oznaczony obiekt zatwierdzania. Gałęzie nie mogą w użyteczny sposób wskazywać obiektów oznaczonych tagiem, tylko zatwierdzać obiekty. Musisz "obierać" znacznik z adnotacjami z powrotem, aby zatwierdzić obiekt i wcisnąć go.

git push production +1.0.0^{commit}:master
git push production +1.0.0~0:master          # shorthand

Jest jeszcze jeden składnia, która również działa w tym przypadku, ale oznacza coś nieco innego, jeśli obiekt tag wskazuje na coś innego niż commit (lub obiekt tag, który wskazuje na (obiekt tag, który wskazuje na ...) commit).

git push production +1.0.0^{}:master

Te składnie znaczników są opisane w git-rev-parse(1) pod określanie zmian.

 56
Author: Chris Johnsen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-15 19:45:49
git push --tags production
 469
Author: bstpierre,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-02 16:16:46

Tworzę tag w ten sposób, a następnie wciskam go na GitHub:

git tag -a v1.1 -m "Version 1.1 is waiting for review"
git push --tags

Counting objects: 1, done.
Writing objects: 100% (1/1), 180 bytes, done.
Total 1 (delta 0), reused 0 (delta 0)
To [email protected]:neoneye/triangle_draw.git
 * [new tag]         v1.1 -> v1.1
 61
Author: neoneye,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-22 11:00:11

For push a single tag: git push <reponame> <tagname>

Na przykład, git push production 1.0.0. Tagi nie są powiązane z gałęziami, lecz z commitami.

Jeśli chcesz mieć zawartość tagu w gałęzi master, zrób to lokalnie na swoim komputerze. Zakładam, że nadal rozwijasz się w swoim lokalnym oddziale master. Więc wystarczy git push origin master.

 9
Author: koppor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-28 14:32:08