Czy istnieje sposób, aby zrobić, git pull
który ignoruje jakiekolwiek lokalne zmiany plików bez zdmuchiwania katalogu i konieczności wykonywania git clone
?
rm -rf local_repo && git clone remote_url
.
Czy istnieje sposób, aby zrobić, git pull
który ignoruje jakiekolwiek lokalne zmiany plików bez zdmuchiwania katalogu i konieczności wykonywania git clone
?
rm -rf local_repo && git clone remote_url
.
Odpowiedzi:
Jeśli masz na myśli, że chcesz, aby ściąganie zastąpiło lokalne zmiany, wykonaj scalanie tak, jakby działające drzewo było czyste, cóż, wyczyść działające drzewo:
git reset --hard
git pull
Jeśli istnieją nieśledzone pliki lokalne, możesz użyć ich git clean
do usunięcia. Służy git clean -f
do usuwania nieśledzonych plików, -df
do usuwania nieśledzonych plików i katalogów oraz -xdf
do usuwania nieśledzonych lub ignorowanych plików lub katalogów.
Jeśli z drugiej strony chcesz w jakiś sposób zachować lokalne modyfikacje, możesz użyć skrytki, aby ukryć je przed wyciągnięciem, a następnie ponownie je zastosuj:
git stash
git pull
git stash pop
Nie wydaje mi się jednak, aby dosłownie ignorować zmiany - połowa ściągania to scalanie i musi scalić zatwierdzone wersje treści z wersjami, które pobrał.
git reset
twoje pliki nadal różnią się od zdalnego, przeczytaj stackoverflow.com/questions/1257592/...
git reset --hard
dotyczy pierwszego, a nie drugiego. Jeśli chcesz w pełni zresetować się do stanu pilota, git reset --hard origin/<branch>
- ale często iw tym przypadku te dwa zobowiązania, przed którymi jesteś, to praca, którą wykonałeś, a nie coś, co chcesz wyrzucić.
Dla mnie działało:
(1) Najpierw pobierz wszystkie zmiany:
$ git fetch --all
(2) Następnie zresetuj master:
$ git reset --hard origin/master
(3) Pull / update:
$ git pull
Chcesz tylko polecenia, które daje dokładnie taki sam wynik jak rm -rf local_repo && git clone remote_url
, prawda? Chcę też tej funkcji. Zastanawiam się, dlaczego git nie udostępnia takiego polecenia (takiego jak git reclone
lub git sync
), ani svn nie zapewnia takiego polecenia (takiego jak svn recheckout
lub svn sync
).
Spróbuj wykonać następujące polecenie:
git reset --hard origin/master
git clean -fxd
git pull
git clean -fxd
usuwa .gitignore
również pliki .
Poniższe polecenie nie zawsze będzie działać . Jeśli po prostu:
$ git checkout thebranch
Already on 'thebranch'
Your branch and 'origin/thebranch' have diverged,
and have 23 and 7 different commits each, respectively.
$ git reset --hard
HEAD is now at b05f611 Here the commit message bla, bla
$ git pull
Auto-merging thefile1.c
CONFLICT (content): Merge conflict in thefile1.c
Auto-merging README.md
CONFLICT (content): Merge conflict in README.md
Automatic merge failed; fix conflicts and then commit the result.
i tak dalej...
Aby naprawdę zacząć od nowa, pobierając gałąź i zastępując wszystkie lokalne zmiany, po prostu wykonaj:
$ git checkout thebranch
$ git reset --hard origin/thebranch
To zadziała dobrze.
$ git checkout thebranch
Already on 'thebranch'
Your branch and 'origin/thebranch' have diverged,
and have 23 and 7 different commits each, respectively.
$ git reset --hard origin/thebranch
HEAD is now at 7639058 Here commit message again...
$ git status
# On branch thebranch
nothing to commit (working directory clean)
$ git checkout thebranch
Already on 'thebranch'
Spójrz na git stash, aby umieścić wszystkie lokalne zmiany w „pliku ukrytym” i powrócić do ostatniego zatwierdzenia. W tym momencie możesz zastosować swoje ukryte zmiany lub je odrzucić.
Jeśli korzystasz z systemu Linux:
git fetch
for file in `git diff origin/master..HEAD --name-only`; do rm -f "$file"; done
git pull
Pętla for usunie wszystkie śledzone pliki, które zostały zmienione w lokalnym repozytorium, więc git pull
będzie działać bez żadnych problemów.
Najładniejszą rzeczą jest to, że tylko pliki śledzone zostaną zastąpione przez pliki w repozytorium, wszystkie pozostałe pliki pozostaną niezmienione.
to zadziałało dla mnie
git fetch --all
git reset --hard origin/master
git pull origin master
z zaakceptowaną odpowiedzią dostaję błędy konfliktu
Zwyklę robię:
git checkout .
git pull
W folderze głównym projektu.
.gitignore
„Dodawanie niechcianych plików do .gitignore działa, dopóki początkowo nie przypisałeś ich do żadnego oddziału.”
Możesz także uruchomić:
git update-index --assume-unchanged filename
https://chamindac.blogspot.com/2017/07/ignoring-visual-studio-2017-created.html