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.
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.
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.
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
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
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
.
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