Jak mogę znaleźć lokalizację origin / master w git i jak mogę ją zmienić?

Jestem nowicjuszem. Niedawno przeniosłem projekt Rails z Subversion do Git. Śledziłem tutorial tutaj: http://www.simplisticcomplexity.com/2008/03/05/cleanly-migrate-your-subversion-repository-to-a-git-repository/

Ja również używam unfuddle.com żeby zapisać mój kod. Wprowadzam zmiany na moim laptopie Mac w pociągu do / z pracy, a następnie wciskam je do rozpakowania, gdy mam połączenie sieciowe, używając następującego polecenia:

git push unfuddle master

Używam Capistrano do wdrożenia i pobranie kodu z repozytorium unfuddle za pomocą gałęzi master.

Ostatnio zauważyłem następujący komunikat po uruchomieniu "Git status" na moim laptopie:

# On branch master
# Your branch is ahead of 'origin/master' by 11 commits.
#
nothing to commit (working directory clean)
I nie wiem dlaczego. Myślałem, że to mój laptop był źródłem... ale nie wiem, czy fakt, że pierwotnie wyciągnąłem z Subversion lub push to Unfuddle jest tym, co powoduje, że wiadomość się pojawia. Jak mogę:
  1. dowiedz się, gdzie według Git' origin/master ' jest?
  2. Jeśli to gdzie indziej, jak zmienić laptopa w "origin / master"?
  3. niech ta wiadomość zniknie. To sprawia, że myślę, że Git jest z czegoś niezadowolony.

Mój mac ma wersję Git 1.6.0.1.


Kiedy uruchamiam {[5] } zgodnie z sugestią dbr, dostaję:

~/Projects/GeekFor/geekfor 10:47 AM $ git remote show origin
fatal: '/Users/brian/Projects/GeekFor/gf/.git': unable to chdir or not a git archive
fatal: The remote end hung up unexpectedly

Kiedy uruchamiam git remote -v zgodnie z sugestią Arystotelesa Pagaltzisa, dostaję następujące:

~/Projects/GeekFor/geekfor 10:33 AM $ git remote -v
origin  /Users/brian/Projects/GeekFor/gf/.git
unfuddle    [email protected]:spilth/geekfor.git

Teraz, co ciekawe, pracuję nad moim projektem w katalogu geekfor, ale jest napisane, że mój origin to moja lokalna maszyna w katalogu gf. Wydaje mi się, że gf był katalogiem tymczasowym, którego użyłem podczas konwersji mojego projektu z Subversion na Git i prawdopodobnie tam, gdzie naciskałem na rozpakowanie. Chyba sprawdziłem świeżą kopię z unfuddle do katalogu geekfor.

Więc wygląda na to, że powinienem podążać za radami dbr i robić:

git remote rm origin
git remote add origin [email protected]:spilth/geekfor.git
Author: jubobs, 2008-11-10

13 answers

1. dowiedz się, gdzie Git myśli, że 'origin / master' używa git-remote

git remote show origin

..co zwróci coś w tym stylu..

* remote origin
  URL: [email protected]:~/something.git
  Remote branch merged with 'git pull' while on branch master
    master
  Tracked remote branch
    master

Zdalny jest w zasadzie łączem do zdalnego repozytorium. Kiedy to zrobisz..

git remote add unfuddle [email protected]/myrepo.git
git push unfuddle

..git wypchnie zmiany na dodany adres. To jak zakładka do zdalnych repozytoriów.

Po uruchomieniu git status sprawdza, czy w zdalnym repozytorium nie ma commitów (w porównaniu do lokalnego repozytorium), a jeśli tak, to ile / align = "left" / Jeśli wciśniesz wszystkie zmiany do "origin", obie będą zsynchronizowane, więc nie dostaniesz tej wiadomości.

2. jeśli jest gdzieś indziej, jak zmienić laptopa w "origin / master"?

Nie ma sensu tego robić. Powiedz, że "origin" zmienia nazwę na "laptop" - nigdy nie chcesz robić git push laptop ze swojego laptopa.

Jeśli chcesz usunąć pilota origin, zrób to..

git remote rm origin

To nie usunie niczego (pod względem zawartości pliku/wersji-historii). To zatrzyma " twoja gałąź jest przed tobą.."wiadomość, ponieważ nie będzie już porównywać repozytorium z remote (bo go nie ma!)

Należy pamiętać, że nie ma nic specjalnego w origin, jest to tylko domyślna nazwa, której używa git.

Git używa origin domyślnie, gdy robisz takie rzeczy jak git push lub git pull. Jeśli więc masz pilota, którego często używasz (Unfuddle, w Twoim przypadku), polecam dodanie unfuddle jako "origin": {]}

git remote rm origin
git remote add origin [email protected]:subdomain/abbreviation.git

Lub wykonaj powyższe w jednym polecenie z użyciem set-url:

git remote set-url origin [email protected]:subdomain/abbreviation.git

Wtedy możesz po prostu zrobić git push lub git pull aby zaktualizować, zamiast git push unfuddle master

 186
Author: dbr,
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-04-04 10:26:29

Doszedłem do tego pytania, szukając wyjaśnienia, co wiadomość " twoja gałąź jest przed tobą..."oznacza, w ogólnym schemacie git. Nie było odpowiedzi na to tutaj, ale ponieważ to pytanie obecnie pojawia się na górze Google, gdy szukasz frazy "twoja gałąź jest przed 'origin / master'", a ja od tego czasu zorientowali się, co tak naprawdę oznacza wiadomość, pomyślałem, że zamieścić informacje TUTAJ.

Więc, będąc początkującym git, widzę, że odpowiedź, której potrzebowałem, była wyraźnie Nowa odpowiedź. W szczególności, co " twoja gałąź jest przed tobą..."phrase oznacza, że są pliki, które dodałeś i zobowiązałeś do lokalnego repozytorium, ale nigdy nie pchnąłeś do źródła. Intencja tej wiadomości jest dodatkowo zaciemniona przez fakt, że "git diff", przynajmniej dla mnie, nie wykazywał żadnych różnic. Dopiero po uruchomieniu "Git diff origin / master"powiedziano mi, że istnieją różnice między moim lokalnym repozytorium, a zdalnym master.

Więc, być Wyczyść:


"twoja gałąź jest przed nami..." = > musisz wcisnąć do zdalnego mistrza. Uruchom "Git diff origin/master", aby zobaczyć, jakie są różnice między lokalnym repozytorium a zdalnym repozytorium głównym.


Mam nadzieję, że pomoże to innym nowicjuszom.

(również, zdaję sobie sprawę, że istnieją subtelności konfiguracji, które mogą częściowo unieważnić To rozwiązanie, takie jak fakt, że master może nie być w rzeczywistości "zdalny", A "pochodzenie" jest rekonfigurowalna nazwa używana przez Konwencję, itd. Ale nowicjusze nie dbają o tego typu rzeczy. Chcemy prostych, prostych odpowiedzi. O subtelnościach możemy poczytać później, gdy już rozwiążemy palący problem.)

Earl

 284
Author: Earl Jenkins,
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
2010-04-06 17:00:57

Miałem problem podobny do tego, gdzie mój katalog roboczy był ahead of origin by X commits, ale git pull powodował Everything up-to-date. Udało mi się to naprawić, wykonując tę radę. Zamieszczam to tutaj na wypadek, gdyby pomogło to komuś innemu z podobnym problemem.

Podstawowa poprawka jest następująca:

$ git push {remote} {localbranch}:{remotebranch}

Gdzie słowa w nawiasach powinny zostać zastąpione przez nazwę zdalnej, nazwę lokalnej gałęzi i nazwę zdalnej gałęzi. np.

$ git push origin master:master
 38
Author: Mims H. Wright,
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
2011-03-30 01:02:42

Czasami istnieje różnica między lokalną buforowaną wersją origin master (origin/master) a prawdziwą origin master.

Jeśli uruchomisz git remote update to resynchuje origin master z origin / master

Zobacz zaakceptowaną odpowiedź na to pytanie

Różnice pomiędzy git pull origin master & git pull origin / master

 24
Author: chim,
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
2017-05-23 12:09:55

Myślałem, że mój laptop był źródłem ...

To trochę bezsensowne: origin odnosi się do domyślnego zdalnego repozytorium – tego, z którego zwykle pobierasz/ściągasz zmiany innych osób.

Jak mogę:

  1. git remote -v pokaże Ci, czym jest origin; origin/master jest twoją "zakładką" dla ostatniego znanego stanu master gałęzi repozytorium origin, a twoja własna masterjest gałęzią śledzącą dla origin/master. Wszystko jest tak, jak powinno be .

  2. Nie masz. przynajmniej nie ma sensu, aby repozytorium było domyślnym zdalnym repozytorium dla siebie.

  3. Nie jest. chodzi tylko o to, że dokonałeś lokalnie tak wielu commitów, których nie ma w zdalnym repozytorium(zgodnie z ostatnim znanym stanem tego repozytorium).

 9
Author: Aristotle Pagaltzis,
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
2008-11-10 05:15:24

[ Rozwiązanie]

$ git push origin

^ to dla mnie rozwiązało. To, co zrobił, zsynchronizował mojego mistrza (na laptopie) z "origin", który jest na zdalnym serwerze.

 3
Author: Chris,
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
2011-06-01 19:28:24

Borykam się z tym problemem i żadna z poprzednich odpowiedzi nie rozwiązuje tego pytania tak, jak ja to widzę. Usunąłem problem z powrotem do jego podstaw, aby zobaczyć, czy mogę wyjaśnić mój problem.

Tworzę nowe repozytorium (rep1), umieszczam w nim jeden plik i zatwierdzam go.

mkdir rep1
cd rep1
git init
echo "Line1" > README
git add README
git commit -m "Commit 1"

Tworzę klon rep1 i nazywam go rep2. Zaglądam do rep2 i widzę, że plik jest poprawny.

cd ~
git clone ~/rep1 rep2
cat ~/rep2/README

W rep1 dokonuję pojedynczej zmiany w pliku i zatwierdzam go. Następnie w rep1 tworzę pilota do wskaż na rep2 i wciśnij zmiany.

cd ~/rep1
<change file and commit>
git remote add rep2 ~/rep2
git push rep2 master

Teraz, kiedy wchodzę w rep2 i robię 'Git status' dostaję informację, że jestem przed origin.

# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   README
#

README w rep2 jest takie, jakie było pierwotnie, przed drugim commitem. Jedyne modyfikacje, które zrobiłem, to rep1 i wszystko, co chciałem zrobić, to wypchnąć je do rep2. Czego nie chwytam?

 1
Author: Steve Hindmarch,
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
2010-07-29 18:21:01

Czeka, aż"przeć". Try:

$ git push

 1
Author: Vino,
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
2011-04-20 03:03:51

Ostatnio miałem ten problem i pomyślałem, że to dlatego, że usunąłem niektóre pliki, których już nie potrzebuję. Problem polega na tym, że git nie wie, że pliki zostały usunięte i widzi, że serwer nadal je posiada. (server = origin)

Więc uciekłem

git rm $(git ls-files --deleted)

I uruchomił commit i push.

To rozwiązało problem.
 1
Author: looneydoodle,
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
2011-07-25 22:22:19

Ja też jestem początkujący. Miałem ten sam problem z komunikatami 'your branch is before of origin / master by N commits'. Wykonanie sugerowanego 'Git diff origin / master' pokazało pewne diffy, których nie dbałem o zachowanie. Więc ...

Ponieważ mój git clone był przeznaczony do hostingu, a ja chciałem dokładną kopię master repo i nie dbałem o zachowanie żadnych lokalnych zmian, postanowiłem zaoszczędzić cały mój repo i utworzyć nowy:

(na maszynie hostingowej)

mv myrepo myrepo
git clone USER@MASTER_HOST:/REPO_DIR myrepo

Dla celowości, I używane do wprowadzania zmian w klonie na mojej maszynie hostingowej. Nigdy więcej. Dokonam tych zmian w master, git commit tam, i wykonam git pull. Mam nadzieję, że to powinno utrzymać mój git clone na komputerze hostingowym w pełnej synchronizacji.

/Nara

 1
Author: Nara Narasimhan,
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-01-04 02:51:18

To samo zastanawiałam się nad moim repo. W moim przypadku miałem Stary pilot, do którego już nie naciskałem, więc musiałem go usunąć.

Pobierz listę pilotów:

git remote

Usuń ten, którego nie potrzebujesz

git remote rm {insert remote to remove}
 0
Author: Jason Rikard,
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
2011-06-10 00:07:17

Możliwe jest zresetowanie do określonego commita przed dokonaniem własnych commitów.

$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 2 commits.
#
nothing to commit (working directory clean)

Użyj git log, aby znaleźć commit, który był commitem, który miałeś przed lokalnymi zmianami.

$ git log
commit 3368e1c5b8a47135a34169c885e8dd5ba01af5bb
...
commit baf8d5e7da9e41fcd37d63ae9483ee0b10bfac8e
...

Zwróć uwagę na lokalne commity i zresetuj je bezpośrednio do poprzedniego commita:

git reset --hard baf8d5e7da9e41fcd37d63ae9483ee0b10bfac8e
 0
Author: RobLoach,
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
2011-08-23 15:24:19

Miałem problem "twoja gałąź wyprzedza' origin / master ' przez commity nn."kiedy wepchnąłem do zdalnego repozytorium z:

git push ssh://[email protected]/yyy/zzz.git
Kiedy odkryłem, że mój odległy adres był w aktach .git / FETCH_HEAD i użyte:
git push
Problem zniknął.
 -1
Author: noob,
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-01-17 11:54:04