Jak pobrać tylko jeden plik z innej gałęzi
Używam Gita i pracuję na gałęzi master. Ta gałąź ma plik o nazwie app.js
.
Mam gałąź experiment
, w której wprowadziłem kilka zmian i mnóstwo commitów. Teraz chcę przenieść wszystkie zmiany tylko do app.js
z experiment
do master
branch.
Po raz kolejny nie chcę połączenia. Chcę tylko przenieść wszystkie zmiany w app.js
z gałęzi experiment
do gałęzi master
.
5 answers
git checkout master # first get back to master
git checkout experiment -- app.js # then copy the version of app.js
# from branch "experiment"
Zobacz także git jak cofnąć zmiany w jednym pliku?
Jako Jakub Narębski wspomina w komentarzach:
git show experiment:path/to/app.js > app.js
Działa również, z tym wyjątkiem, że jak szczegółowo opisano w pytaniu " Jak odzyskać pojedynczy plik z konkretnej rewizji w Git?", musisz użyć pełnej ścieżki z katalogu głównego repo.
Stąd ścieżka / do / aplikacji.js użyty przez Jakuba w jego przykładzie.
Jako mroźny wspomina w komentarzu:
Otrzymasz tylko najnowszy stan aplikacji.js
Ale, dla git checkout
lub git show
, możesz odwołać się do dowolnej wersji, jak pokazano w pytaniu " Git checkout rewizja pliku w gui git":
$ git show $REVISION:$FILENAME
$ git checkout $REVISION -- $FILENAME
Będzie tak samo, jeśli $FILENAME jest pełną ścieżką wersjonowanego pliku.
$REVISION
może być jak pokazano w git rev-parse
:
experiment@{yesterday}:app.js # app.js as it was yesterday
experiment^:app.js # app.js on the first commit parent
experiment@{2}:app.js # app.js two commits ago
I tak dalej.
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:29
Wszystko jest o wiele prostsze, użyj do tego git checkout.
Przypuśćmy you're on master
branch, aby uzyskać app.js from new-feature
oddział do:
git checkout new-feature path/to/app.js
// note that there is no leading slash in the path!
Spowoduje to wyświetlenie zawartości żądanego pliku. Możesz, jak zawsze, użyć części sha1 zamiast nowość-funkcja Nazwa gałęzi , aby uzyskać plik taki, jaki był w danym commicie.
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-02-12 18:44:19
Uzupełnienie odpowiedzi VonC i chhh.
git show experiment:path/to/relative/app.js > app.js
# If your current working directory is relative than just use
git show experiment:app.js > app.js
Lub
git checkout experiment -- app.js
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-01-12 21:16:14
git checkout branch_name file_name
Przykład:
git checkout master App.java
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-05-11 11:44:42
Lub jeśli chcesz wszystkie pliki z innej gałęzi:
git checkout <brachname> -- .
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-02-20 02:43:06