Próba pobrania plików z repozytorium Github: "odmowa scalania niepowiązanych historii"

Uczę się Gita i podążam za książką społeczności Gita.

Poprzednio (dawno temu) zrobiłem publiczne repozytorium na Githubie, z niektórymi plikami. Teraz skonfigurowałem lokalne repozytorium Gita na moim bieżącym komputerze i uruchomiłem kilka plików. Następnie dodałem remote wskazujący na moją stronę Github:

[root@osboxes c]# git remote add learnc https://github.com/michaelklachko/Learning-C

To wydawało się udane:

[root@osboxes c]# git remote show learnc
* remote learnc
  Fetch URL: https://github.com/michaelklachko/Learning-C
  Push  URL: https://github.com/michaelklachko/Learning-C
  HEAD branch: master
  Remote branch:
    master tracked
  Local ref configured for 'git push':
    master pushes to master (local out of date)

Teraz chcę pobrać pliki z mojego Github repo do mojego komputera. Zrobiłem to:

[root@osboxes c]# git fetch learnc
[root@osboxes c]# git merge learnc/master
warning: refname 'learnc/master' is ambiguous.
Already up-to-date.

Jednak nie widzę żadnych nowych pliki w moim lokalnym katalogu. Jak mogę je zdobyć?

Ja też próbowałem to zrobić:

[root@osboxes c]# git pull learnc master
From https://github.com/michaelklachko/Learning-C
 * branch            master     -> FETCH_HEAD
fatal: refusing to merge unrelated histories

BTW, lokalnie jestem na gałęzi master (nie ma innych gałęzi):

[root@osboxes c]# git status
On branch master
nothing to commit, working directory clean
Author: MichaelSB, 2016-07-08

5 answers

Try --allow-unrelated-histories

Jak max630 skomentował, lub jak wyjaśniono tutaj Git odmawia łączenia niepowiązanych historii

 202
Author: Nevermore,
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 11:47:28
git checkout master
git merge origin/master --allow-unrelated-histories

Rozwiąż konflikt, a następnie

git add -A .
git commit -m "Upload"
git push
 66
Author: Do Nhu Vy,
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
2016-12-04 14:59:10

Chociaż jestem za odblokowaniem problemów z pracą ludzi, nie sądzę, aby "push --force" lub" --allow_unrelated_histories " były nauczane dla nowych użytkowników jako ogólne rozwiązania, ponieważ mogą one spowodować prawdziwe spustoszenie w repozytorium, gdy ktoś ich używa bez zrozumienia, dlaczego rzeczy nie działają w pierwszej kolejności.

Gdy masz taką sytuację, w której zaczynałeś od lokalnego repozytorium i chcesz zrobić zdalnego na Githubie, z którym możesz dzielić się swoją pracą, jest na co uważać za.

Podczas tworzenia nowego repozytorium online pojawia się opcja "Initialize this repozytorium with a README". Jeśli czytasz drobnym drukiem, napis " pomiń ten krok, jeśli importujesz istniejące repozytorium."

Być może zaznaczyłeś to pole. Lub podobnie, dokonałeś wpisu dodaj / commit online, zanim spróbowałeś pierwszego pchnięcia. Co się dzieje, to tworzysz unikalną historię zmian w każdym miejscu i nie można ich pogodzić bez specjalnego dodatku wymienionego w Nevermore ' s answer (bo git nie chce, żebyś tak działał). Możesz postępować zgodnie z niektórymi wskazówkami tutaj wymienionymi, lub po prostu po prostu nie zaznaczaj tej opcji następnym razem, gdy chcesz połączyć niektóre pliki lokalne z nowym pilotem; utrzymując pilota w czystości dla tego pierwszego push.

Odniesienie: moje pierwsze doświadczenie z git + hub polegało na napotkaniu tego samego problemu i nauczeniu się zrozumieć, co się stało i dlaczego.

 26
Author: BigJMoney,
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-26 20:57:22

Jeśli nie ma znaczącej historii na jednym końcu (aka jeśli jest to tylko pojedynczy commit readme na końcu github), często łatwiej jest ręcznie skopiować readme do mojego lokalnego repo i zrobić git push -f, aby moja wersja była nowym commitem głównym.

Uważam, że jest to nieco mniej skomplikowane, nie wymaga zapamiętywania niejasnej flagi i utrzymuje historię nieco czystszą.

 10
Author: captncraig,
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-04 21:24:23

Na Twojej gałęzi-powiedz Mistrzu, ciągnij i Zezwalaj na niepowiązane historie

git pull origin master --allow-unrelated-histories
Zadziałało dla mnie.
 2
Author: Edgar256,
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
2018-08-27 08:23:29