Mój pierwszy raz [fork na GitHubie]

0

Aloha.
Zacząłem grzebać sobie w pewnym projekcie z githuba i pomyślałem, że byłoby fajnie śledzić swoje zmiany. Zrobiłem więc swojego pierwszego forka, checkout na localu, wprowadziłem zmiany, zrobiłem commita i... chciałem zrobić pusha. Korzystam z TortoiseGit i dostałem na twarz błąd. Spodziewałem się, że zadanie powinno być do ogarnięcia przez pięciolatka, ale to przecież git.
Błędu nie spisałem, a nie jestem w stanie już go powtórzyć, gdyż Tortoise nie widzi zmian możliwych do wypchnięcia (ale ich nie wypchnął, bo na githubie nie ma po nich śladu)

Próbowałem też innym sposobem i tu już spisałem błąd "src refspec master matches more than one". Nie znam niestety suahili.

Pytanie pierwsze. Czego nie rozumiem w tym procesie?

  1. fork
  2. checkout (clone)
  3. zmiany
  4. commit
  5. push
    ?

Pytanie drugie. Jak zrobić pusha? Show log pokazuje mój commit, okienko sync nie pokazuje nic do wypchnięcia. Okienko push po wciśnięciu [ok] zwraca:

The entered source ref is ambiguous.
You have to make it unique (e.g. by adding "refs/heads/" as a prefix for branches or "refs/tags/" for tags)!

a wygląda tak:
screenshot-20170118113010.png

0

https://lostechies.com/jasonmeridth/2010/02/27/refspec-matches-more-than-one/ ?
Niemniej coś zrobiłeś po drodze źle, bo fork, clone, change, commit, push powinno spokojnie zadziałać.

0

Absolutnie nic więcej. Nawet nie było za bardzo okazji raczej. Po zassaniu repo na dysk przeniosłem zmiany i od razu commit&push.. i error jaki widać.

Próbuję ponownie. Clone na czysto, wprowadzę zmiany i commit&push. Zobaczę co będzie, ale obstawiam to samo.

0

Chodzi o Windows?
Na Windows masz ze 3 klienty, z czego tylko jeden jest dobry. Niestety nie pamiętam który.

  1. git + bash
  2. Tortoise
  3. GitHub Desktop: https://desktop.github.com/

Moja rada na tego typu sytuacje: usunąć stary katalog i spróbować od nowa. Może niezbyt wyszukane ale zwykle działa.

0

klienty gitowe maja czasami problem.
Sprobuj to samo zrobic ale za pomoca konsoli

0

Tak, Windows. Używam Tortoisa i do Subversion (jak jeszcze używałem) i do Gita. Do poleceń gita w konsoli trzeba mieć level zen. Jeszcze tam nie dotarłem.
Zrobiłem wszystko na czysto, czyli:

  1. clone
  2. dodanie zmian
  3. commit
  4. push
    i mam ten sam błąd:
The entered source ref is ambiguous.
You have to make it unique (e.g. by adding "refs/heads/" as a prefix for branches or "refs/tags/" for tags)!
1

mialem podobny blad ale z wtyczka do Visual studio (o podobnej tresci). Ale gdy zrobilem to samo w z konsoli to przeszlo bez problemow (chodzi o sam push)

0
>git push
error: src refspec master matches more than one.
error: failed to push some refs to 'https://github.com/bla/bla.git'
1

Ja chyba miałem coś podobnego - chodziło o to że klient nie wiedział na którego brancha wypchnąć zmiany.
Jak już raz to poprawiłem to potem był spokój.

Zajrzyj tutaj: http://stackoverflow.com/questions/12224773/git-refname-master-is-ambiguous

Edit: a może masz starego Tortoise'a?
https://gitlab.com/tortoisegit/tortoisegit/issues/1361

0
>git tag tag-master master
warning: refname 'master' is ambiguous.

>git tag -d master
Deleted tag 'master' (was c8faec9)

Po tym Tortoise nadal to samo, ale... git push z konsoli już przeszło, zmiany widać na githubie.
Dzięki, ale:

  1. wolałbym jednak by tortoise śmigało, łatwiej mi się z nim pracuje - jak będę wysyłał kolejne zmiany to zobaczę jak sobie poradzi
  2. chciałbym zrozumieć, dlaczego to nie działało tak prosto, jak to zachwala git(hub)
0

Zacznij używać git shell, zbliżony do terminala w innych systemach

1
d:\t\test-git>git tag

d:\t\test-git>git push origin master
fatal: 'origin' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

d:\t\test-git>git push origin master2
error: src refspec master2 does not match any.
error: failed to push some refs to 'origin'

d:\t\test-git>git push origin refs/heads/master
fatal: 'origin' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

d:\t\test-git>git tag master

d:\t\test-git>git push origin master
error: src refspec master matches more than one.
error: failed to push some refs to 'origin'

d:\t\test-git>git push origin refs/heads/master
fatal: 'origin' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

d:\t\test-git>git tag -d master
Deleted tag 'master' (was 116e305)

d:\t\test-git>git push origin master
fatal: 'origin' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

po dodaniu tagu "master" pushowanie nie działa, po jego usunięciu działa
przy komunikacie "src refspec master matches more than one" należy prefiksować local branch name czyli zamiast "master", używamy "refs/heads/master" => "git push origin refs/heads/master"
w TortoiseGit powinno zadziałać po zmianie w Ref: > Local: "master" na "refs/heads/master"
wymóg prefiksowania może również dotyczyć remote branch name

0

Tortoise SVN działa lepiej od Tortoise Git. Tu jest 4-ty klient który może pomóc na przyszłość: https://gitextensions.github.io/

0

Sęk w tym, że ja żadnego tagu nie dodawałem. Może to źródłowe repo jest "skopane" i stąd problem? Może przy innych projektach przeszłoby gładko? Czy to możliwe?

0

pokaż wynik "git show-ref --tags --heads"
to może być wina źródłowego repo, konflikt nazw branchy i tagów

0

Tam, gdzie nie działa:

8cdd... refs/heads/master
c8fa... refs/tags/master
24be... refs/tags/v0.1.0

Po usunięciu jak zalecono powyżej, gdzie już z konsoli push poszedł:

29ab... refs/heads/master
c8fa... refs/tags/tag-master
24be... refs/tags/v0.1.0

A oryginalne repo, z którego zrobiłem forka:

88a2... refs/heads/jakis-branch-1
63ea... refs/heads/jakis-branch-2
8106... refs/heads/jakis-branch-3
bf06... refs/heads/jakis-branch-4
74f9... refs/heads/master
c8fa... refs/tags/master
24be... refs/tags/v0.1.0
0

No to jeszcze raz. Teraz próba zrobienia pulla kończy się tak:

Pull requires the selected local branch to be the current branch.

switch/checkout zwraca:

Your branch is up-to-date with 'origin/master'.
warning: refname 'master' is ambiguous.
Already on 'master'

Jak mi ktoś jeszcze będzie próbował wmówić, że git to dobre narzędzie, to wyśmieję w twarz ;]

0

A Ty czasem nie próbujesz wrzucić wszystkich branchy naraz? Tak zgaduje.
Może powinieneś to robić w którymś podkatalogu?

0

Ale Ty nie używasz Gita tylko jakiejś smutnej nakładki dla emerytów. ;)

Jesteś tam w stanie zobaczyć strukturę (listę commitów i branchy) swojego lokalnego repozytorium?

0
vpiotr napisał(a):

A Ty czasem nie próbujesz wrzucić wszystkich branchy naraz? Tak zgaduje.
Może powinieneś to robić w którymś podkatalogu?

Nie mam pojęcia. Kolejne punkty opisałem wyżej.

  1. checkout
  2. zmiana
  3. commit
  4. push [error, rozwiązany przez usunięcie taga]
    tu powiedzmy, że coś zmieniłem na innym kompie, więc testuję pulla:
  5. pull [error z poprzedniego postu]
somekind napisał(a):

Ale Ty nie używasz Gita tylko jakiejś smutnej nakładki dla emerytów. ;)

Jesteś tam w stanie zobaczyć strukturę (listę commitów i branchy) swojego lokalnego repozytorium?

Używam nakładki, która miała ułatwić, gdyż wolałbym skupić się na developerce, niż nauce tajnych poleceń konsolowych.
A czy jestem, to nie wiem. Show log mam, jeśli o to chodzi.

0

@Marooned: coś często masz problemy z tym gitem :) Pechowo. Chciałem Ci polecić inne rozwiązanie pracy z gitem. Też kiedyś używałem TortoiseGit, ale już dawna nie używam. Od kilku lat za to korzystam z obsługi git poprzez IDE. Nie wiem na jakim środowisku pracujesz ale IDE typu PHPStorm, WebStorm, Pycharm (wszystko tej samej firmy) mają świetną obsługę git. Właściwie wszystko co potrzebne jest zawarte (commit, mergowanie, pushowanie, branche itp itd. Dodatkowo podpinasz sobie kilka skrótów klawiaturowych i praca z gitem jest jak marzenie :) Darmowe IDE takie jak Netbeans czy Eclipse też zapewne posiadają taką funkcjonalność.

screenshot-20170118174617.png

W dolnym rogu IDE masz listę branchy na które się przełączasz. Commitujesz pliki bezpośrednio z IDE. Zapomnij o Tortoise. To nie jest dobry produkt. Wiem, że to nie jest odpowiedź na Twoje pytanie, ale może polubisz pracę z gitem gdy zaczniesz korzystać z lepszego środowiska.

Pozdrawiam i powodzenia :)

1

Wszedłem na jakieś losowe repo, którego wcześniej na oczy nie widziałem.
https://github.com/linuxmint/nemo
i kliknąłem Fork.

Teraz w Git Bashu pod Windows.

Tworzymy katalog:

Azarien@······ MINGW32 /c/svn
$ mkdir nemo

Azarien@······ MINGW32 /c/svn
$ cd nemo

Klonujemy:

Azarien@······ MINGW32 /c/svn/nemo
$ git clone ssh://[email protected]/Azarien/nemo .
Cloning into '.'...
remote: Counting objects: 8616, done.
remote: Total 8616 (delta 0), reused 0 (delta 0), pack-reused 8616
Receiving objects: 100% (8616/8616), 14.77 MiB | 280.00 KiB/s, done.
Resolving deltas: 100% (5775/5775), done.
Checking connectivity... done.

Jest:

Azarien@······ MINGW32 /c/svn/nemo (master)
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean

Teraz wprowadzamy jakąś zmianę. Wygląda tak:

Azarien@······ MINGW32 /c/svn/nemo (master)
$ git diff
diff --git a/README.md b/README.md
index cd59c29..875187e 100644
--- a/README.md
+++ b/README.md
@@ -3,3 +3,4 @@ Nemo
 File Manager for Cinnamon

 Nemo is the file manager for the Cinnamon desktop environment.
+Bzdurna zmiana.

Commit...

Azarien@······ MINGW32 /c/svn/nemo (master)
$ git commit -a -m "Bzdurny commit"
[master 30fd18c] Bzdurny commit
 1 file changed, 1 insertion(+)

Push...

Azarien@······ MINGW32 /c/svn/nemo (master)
$ git push
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 309 bytes | 0 bytes/s, done.
Total 3 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
To ssh://[email protected]/Azarien/nemo
   340228c..30fd18c  master -> master

Azarien@······ MINGW32 /c/svn/nemo (master)
$

Czyli działa, tak po prostu.

To spróbujmy teraz pod TortoiseGitem. Mam jakąś starą wersję(1.8).

Clone...

1.png

OK...

2.png

Przeszło.
Wprowadzam zmianę, robię Commit...

3.png

OK...

4.png

Przeszło.
Robię Push...

5.png

OK...

6.png

Przeszło.

2

Kończąc wątek, rozwiązaniem okazało się:
git push origin :tags/master
czyli usunięcie tagu master w repo, by zniknęła dwuznaczność. "Błąd" leżał po stronie oryginalnego repo, gdzie istnieje tag oraz branch o tej samej nazwie.

0

Wyglada to strasznie Windows + TortoiseSVN + C:\svn ...
to już wolałbym z konsoli lub z SourceTree lub GitExtensions, GitKraken.

Albo Linux + git + np. Intellij ...

1 użytkowników online, w tym zalogowanych: 0, gości: 1