Jak wypychać lokalne zmiany do zdalnego repozytorium git w usłudze Bitbucket


82

Testuję Git i Bitbucket.

Utworzyłem repozytorium na Bitbucket i utworzyłem lokalną kopię repozytorium i wysyłam do niego pliki. Nie mogę przesłać plików z mojego lokalnego repozytorium do zdalnego repozytorium.

Oto co robię:

git clone https://me@bitbucket.org/me/test.git
cd test
touch dummy
git add dummy
git commit dummy -m "my first git commit"
git push

Końcowe wyjścia liniowe:

Everything up-to-date

A kiedy loguję się do Bitbucket, nie widzę mojego fałszywego pliku.

Co ja robię źle?

EDYTOWAĆ:

To zadziałało:

 git push origin master:master

Jakieś wyjaśnienia dotyczące różnicy między tym a prostym git push?


Każdy nowy użytkownik, który widzi to pytanie, może wyświetlić stackoverflow.com/questions/5713563/ ...
JGallardo

Odpowiedzi:


102

Użyj git push origin masterzamiast tego.

Masz repozytorium lokalnie i inicjał git pushjest do niego „wypychany”. Nie jest to konieczne (ponieważ jest lokalne) i pokazuje wszystko jako aktualne. git push origin masterokreśla zdalne repozytorium ( origin) i znajdującą się tam gałąź ( master).

Aby uzyskać więcej informacji, zapoznaj się z tym zasobem .


2
Powinienem również wspomnieć, że kiedy coś klonujesz, originrepozytorium jest definiowane automatycznie.
Chuck Callebs

15

Jest to środek bezpieczeństwa, aby uniknąć popychania gałęzi, które nie są gotowe do publikacji. Mówiąc luźno, przez wykonanie "git push", tylko lokalne gałęzie, które już istnieją na serwerze o tej samej nazwie, zostaną wypchnięte lub gałęzie, które zostały wypchnięte przy użyciu składni localbranch: remotebranch.

Aby wypchnąć wszystkie lokalne gałęzie do zdalnego repozytorium, użyj --all:

git push REMOTENAME --all
git push --all

lub określ wszystkie gałęzie, które chcesz wypchnąć:

git push REMOTENAME master exp-branch-a anotherbranch bugfix

Dodatkowo warto dodać -udo polecenia „git push”, ponieważ powie ci, czy twój lokalny oddział jest przed, czy za zdalnym oddziałem. Jest to pokazane, gdy uruchomisz „git status” po pobraniu git.


8

Jestem z Git pobranym z https://git-scm.com/ i skonfiguruj ssh postępuj zgodnie z instrukcjami, aby uzyskać instrukcje https://stackoverflow.com/a/26130250/4058484 .

Po zweryfikowaniu wygenerowanego klucza publicznego na moim koncie Bitbucket i po wykonaniu czynności opisanych na stronie http://www.bohyunkim.net/blog/archives/2518 stwierdziłem, że działa tylko funkcja „git push” :

git clone https://me@bitbucket.org/me/test.git
cd test
cp -R ../dummy/* .
git add .
git pull origin master 
git commit . -m "my first git commit" 
git config --global push.default simple
git push

Odpowiedź powłoki jest następująca:

$ git push
Counting objects: 39, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (39/39), done.
Writing objects: 100% (39/39), 2.23 MiB | 5.00 KiB/s, done.
Total 39 (delta 1), reused 0 (delta 0)
To https://me@bitbucket.org/me/test.git 992b294..93835ca  master -> master

Działa nawet w przypadku naciskania na scalanie mastera ze stronami gh w GitHub

git checkout gh-pages
git merge master
git push

0

Znaczenie drugiego parametru (' master') git pushpolecenia „ ” -

$ git push origin master

można to wyjaśnić, uruchamiając pushpolecenie " news-item" z gałęzi ' '. To spowodowało " master" wypchnięcie lokalnego oddziału do zdalnego masteroddziału. Aby uzyskać więcej informacji, zobacz

https://git-scm.com/docs/git-push

gdzie <refspec>w

[<repository> [<refspec>…​]

ma oznaczać „ specify what destination ref to update with what source object.

W celach informacyjnych przedstawiam zrzut ekranu, w jaki sposób zweryfikowałem to oświadczenie.

<code> wprowadź opis obrazu tutaj </code>

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.