Gałąź z poprzedniego commita przy użyciu Git
Jeśli mam n commitów, Jak mogę rozgałęziać się z N-3 commitów?
Widzę hash każdego commita.
13 answers
Możesz utworzyć gałąź za pomocą hasha:
git branch branchname <sha1-of-commit>
Lub za pomocą symbolicznego odniesienia:
git branch branchname HEAD~3
Aby sprawdzić gałąź podczas jej tworzenia, użyj
git checkout -b branchname <sha1-of-commit or HEAD~3>
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-06-18 15:37:34
Aby zrobić to na github.com:
-
Idź do swojego projektu.
- Kliknij na "commity".
- Kliknij na ("Przeglądaj repozytorium w tym momencie historii") na zatwierdzeniu, z którego chcesz się rozgałęziać.
- Kliknij na "drzewo: xxxxxx" w lewym górnym rogu. Poniżej paska statystyk językowych pojawi się opcja "Znajdź lub utwórz gałąź" (po prostu wpisz tam nazwę nowej gałęzi)
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-01-24 22:38:47
Jeśli nie jesteś pewien, z którego commita chcesz się rozgałęziać, możesz sprawdzić commity i sprawdzić ich kod (zobacz source, compile, test) przez
git checkout <sha1-of-commit>
Gdy znajdziesz commit, z którego chcesz się rozgałęziać, możesz to zrobić z poziomu commita (tzn. bez powrotu do master), po prostu tworząc gałąź w zwykły sposób:
git checkout -b <branch_name>
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
2014-02-10 16:43:35
Magia może być wykonana przez git reset .
-
Utwórz nową gałąź i przełącz się na nią (aby wszystkie ostatnie commity były tutaj przechowywane)
git checkout -b your_new_branch
-
Wróć do poprzedniej działającej gałęzi (Załóżmy, że jest to master)
git checkout master
-
Usuń najnowsze commity x, utrzymuj master w czystości
git reset --hard HEAD~x # in your case, x = 3
Od tej chwili, wszystkie najnowsze commity X są tylko w nowej gałęzi, a nie w Twojej poprzedniej pracy / align = "left" /
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
2015-08-03 09:04:43
git checkout -b <branch-name> <sha1-of-commit>
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-07-11 07:11:37
Szybki sposób, aby to zrobić na GitHub repo byłby następujący:
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-14 17:51:09
Możesz to zrobić w schowku.
- Kliknij commit
- w prawym górnym rogu ekranu kliknij "Tag this commit"
- Następnie możesz utworzyć nową gałąź z tagu, który właśnie utworzyłeś.
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-18 17:20:08
Aby zrobić to w Eclipse:
- Przejdź do perspektywy "eksploracja repozytorium Git".
- rozwiń "tagi" i wybierz commit, z którego chcesz utworzyć gałąź.
- Kliknij prawym przyciskiem myszy na zatwierdzeniu i wybierz "Utwórz gałąź".
- Podaj nazwę gałęzi.
Utworzy dla Ciebie lokalną gałąź. Wtedy za każdym razem, gdy wypchniesz zmiany, twoja gałąź zostanie przeniesiona na zdalny serwer.
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-01-24 22:37:44
Świetne powiązane pytanie brzmi: jak do cholery do tego doszedłeś używając --help
opcji Gita? Spróbujmy:
git branch --help
Widzimy to wyjście:
NAME
git-branch - List, create, or delete branches
SYNOPSIS
git branch [--color[=<when>] | --no-color] [-r | -a]
[--list] [-v [--abbrev=<length> | --no-abbrev]]
[--column[=<options>] | --no-column]
[(--merged | --no-merged | --contains) [<commit>]] [--sort=<key>]
[--points-at <object>] [<pattern>...]
git branch [--set-upstream | --track | --no-track] [-l] [-f] <branchname> [<start-point>]
git branch (--set-upstream-to=<upstream> | -u <upstream>) [<branchname>]
git branch --unset-upstream [<branchname>]
git branch (-m | -M) [<oldbranch>] <newbranch>
git branch (-d | -D) [-r] <branchname>...
git branch --edit-description [<branchname>]
Gobbledegook.
Przeszukaj kolejny tekst w poszukiwaniu słowa "Zatwierdź". Znajdujemy to:
<start-point>
The new branch head will point to this commit. It may be given as a branch name, a
commit-id, or a tag. If this option is omitted, the current HEAD will be used instead.
Do czegoś zmierzamy!
Teraz skup się na tej linii the gobbledegook:
git branch [--set-upstream | --track | --no-track] [-l] [-f] <branchname> [<start-point>]
Skondensuj to do tego:
git branch <branchname> [<start-point>]
I gotowe.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-07-19 16:35:48
Udało mi się to zrobić tak:
git branch new_branch_name `git log -n 1 --skip 3 --format=%H`
Gdzie należy wprowadzić wartość pominięcia. 0 to najnowszy, 1 to poprzedni, 2 to poprzedni commit, itd.
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-01-24 22:36:29
Oto co zrobiłem:
C:\Users\[path]\build>git checkout -b responsivenavigation 8a75b001096536b3216022484af3026aa9c7bb5b
Switched to a new branch 'responsivenavigation'
C:\Users\jaimemontoya\Dropbox\CuponClub\androidapp\build>git branch
master
* responsivenavigation
W tym przypadku 8a75b001096536b3216022484af3026aa9c7bb5b
był i był starym commitem należącym do gałęzi master
.
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-06-14 08:23:44
przejdź do konkretnego commita repozytorium git
Czasami podczas pracy nad repozytorium git chcesz wrócić do określonego commita (rewizji), aby mieć migawkę swojego projektu w określonym czasie. Aby to zrobić wystarczy hash SHA-1 commita, który można łatwo znaleźć sprawdzając dziennik za pomocą polecenia:
git log --abbrev-commit --pretty=oneline
Który da ci zwartą listę wszystkich commitów i skróconą wersję skrótu SHA-1.
Now that you znając hash commita, do którego chcesz przejść, możesz użyć jednego z następujących 2 poleceń:
git checkout HASH
Lub
git reset --hard HASH
checkout
git checkout <commit> <paths>
Mówi gitowi, aby zamienił bieżący stan ścieżek na ich stan w podanym commicie. Ścieżki mogą być plikami lub katalogami.
Jeśli nie podano gałęzi, git zakłada commit HEAD.
git checkout <path> // restores path from your last commit. It is a 'filesystem-undo'.
Jeśli nie podano ścieżki, git przenosi HEAD
do podanego commita (zmieniając tym samym commit siedząc i pracując).
git checkout branch //means switching branches.
reset
git reset <commit> //re-sets the current pointer to the given commit.
Jeśli znajdujesz się na gałęzi (zazwyczaj powinieneś być), HEAD
i ta gałąź jest przenoszona do commit.
Jeśli jesteś w stanie odłączonym HEAD
, git reset porusza się tylko HEAD
. aby zresetować gałąź, najpierw sprawdź to.
Jeśli chcesz dowiedzieć się więcej o różnicy między git reset i GIT checkout, polecam przeczytać Oficjalny blog git.
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-07-20 15:47:56
Dla użytkowników Git GUI możesz zwizualizować całą historię (jeśli to konieczne), a następnie kliknąć prawym przyciskiem myszy na zatwierdzeniu, z którego chcesz się odgałęzić i wprowadzić nazwę gałęzi.
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-28 12:04:32