Jak zmusić git pull do nadpisania wszystkiego na każdym pullu?
Mam centralne repozytorium, które ma trzy repozytoria deweloperskie ciągnące i pchające do niego normalnie.
Mam również dwa inne repozytoria, które pobierają się z centralnego nagiego repo: jeden jest serwerem live, a drugi jest serwerem testowym / etapowym-każdy pobiera z własnej gałęzi.
Scenariusz jest następujący: mam post-update
skrypt Hooka na centralnym repo, który automatycznie uzyskuje dostęp do testów i repozytoriów na żywo i uruchamia polecenie pull na każdym z nich. To aktualizuje zarówno test jak i aktywne serwery, wszystko zależy od tego, która gałąź ma nowe commity. To wszystko działa świetnie.
Problem polega na tym, że w nagłych przypadkach pliki mogą być aktualizowane bezpośrednio na serwerze (przez ftp lub cokolwiek innego), a centralny skrypt po aktualizacji zawiedzie, Ponieważ pojawią się konflikty scalania/nadpisywania. Nie ma sposobu, aby uniknąć tego scenariusza i jest to nieuniknione.
Chciałbym, aby stało się tak: chcę, aby pull z witryn na żywo i testowych do zawsze zastąp / połącz przy ciągnięciu. zawsze. te transakcje repo będą tylko pull-tylko, ponieważ nie są one dla rozwoju.
We wszystkich moich badaniach nie mogę znaleźć dobrego rozwiązania, aby ciągnąć zawsze wymusić nadpisanie plików lokalnych. Czy to w ogóle możliwe? To byłby świetny scenariusz rozwoju, jeśli tak.
7 answers
Naprawdę idealnym sposobem na to jest nie używać pull
w ogóle, ale zamiast fetch
i reset
:
git fetch origin master
git reset --hard FETCH_HEAD
git clean -df
(zmienianie master
na dowolną gałąź, którą chcesz podążać.)
pull
reset
jest zaprojektowany wokół scalania zmian razem w jakiś sposób, podczas gdy reset
jest zaprojektowany wokół prostego dopasowania lokalnej kopii do określonego commita.
Możesz rozważyć nieco inne opcje do clean
w zależności od potrzeb Twojego systemu.
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-03-07 19:40:14
Możesz spróbować tego:
git reset --hard HEAD
git pull
(z Jak wymusić "git pull", aby nadpisać lokalne pliki?)
Innym pomysłem byłoby usunięcie całego Gita i utworzenie nowego klona.
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:18:25
Nie wiem jak to zrobić jednym poleceniem, ale można zrobić coś w stylu:
git reset --hard
git pull
Lub nawet
git stash
git pull
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-03-06 18:40:47
Aby pobrać kopię gałęzi i Wymuś nadpisanie plików lokalnych {[3] } z origin użyj:
git reset --hard origin/current_branch
Cała bieżąca praca zostanie utracona i będzie taka sama jak gałąź origin
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-03-22 08:39:44
git reset --hard HEAD
git fetch --all
git reset --hard origin/your_branch
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-23 19:01:05
Możesz zmienić hak, aby wszystko wyczyścić.
# Danger! Wipes local data!
# Remove all local changes to tracked files
git reset --hard HEAD
# Remove all untracked files and directories
git clean -dfx
git pull ...
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-03-06 18:40:39
Jeśli nie zatwierdziłeś jeszcze lokalnych zmian od ostatniego pull/clone, możesz użyć:
git checkout *
git pull
checkout
wyczyści Twoje lokalne zmiany z ostatnim lokalnym zatwierdzeniem i
pull
skopiuje go do zdalnego repozytorium
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-08-22 17:47:49