Yanıtlar:
Şube bir karma yoluyla oluşturabilirsiniz:
git branch branchname <sha1-of-commit>
Veya sembolik bir referans kullanarak:
git branch branchname HEAD~3
Şube oluştururken ödeme yapmak için şunu kullanın:
git checkout -b branchname <sha1-of-commit or HEAD~3>
git push origin BRANCH_NAME
<sha1-of-commit>
koşmak git checkout -b <name-of-branch> <sha1-of-commit>
ama dal zaten varsagit checkout -B <name-of-branch> <sha1-of-commit>
Bunu github.com'da yapmak için:
Sihir git reset ile yapılabilir .
Yeni bir şube oluşturun ve bu şubeye geçin (böylece son taahhütlerinizin tümü burada saklanır)
git checkout -b your_new_branch
Önceki çalışma şubenize geri dönün (master olduğunu varsayalım)
git checkout master
En son x işlemlerini kaldırın, ustayı temiz tutun
git reset --hard HEAD~x # in your case, x = 3
Bu andan itibaren, en son x işlemlerinin tümü yalnızca yeni şubede olur, önceki çalışma şubenizde (ana) artık olmaz.
git reset --hard
eğer kökeni taahhüt etmeye
git push --force
Zaten şube önce itilmiş olsaydı
Hangi taahhüdü önceden dallamak istediğinizden emin değilseniz, taahhütleri kontrol edebilir ve kodlarını inceleyebilirsiniz (kaynak, derleme, test)
git checkout <sha1-of-commit>
dallamak istediğiniz taahhüdü bulduktan sonra, bunu her zamanki gibi bir şube oluşturarak, taahhüt içinde (yani önce ustaya geri dönmeden) yapabilirsiniz:
git checkout -b <branch_name>
git checkout -b <branch-name> <sha1-of-commit>
git branch branchname <sha1-of-commit>
" (kabul edilen cevaptan) farkı nedir?
git checkout -b
yeni bir dal oluşturmak için kullanıyorum .
Github deponuzda bunu yapmanın hızlı bir yolu aşağıdaki gibidir:
Basitçe çalıştırın:
git checkout -b branch-name <commit>
Örneğin :
git checkout -b import/january-2019 1d0fa4fa9ea961182114b63976482e634a8067b8
checkout
Parametreyle komut -b
yeni bir şube yaratacak VE kendisine üzerinize geçecektir
git fetch
ve git branch
komut verin, ardından özellik dalının mevcut olup olmadığını kontrol edin, bu durumda evetse, elbette silinen dallardan bir dal oluşturamazsınız, ayrıca şube gitti
Harika bir soru şudur: --help
Git seçeneğini kullanarak bunu nasıl anlıyorsunuz ? Hadi bunu deneyelim:
git branch --help
Bu çıktıyı görüyoruz:
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.
Sonraki metinde "taahhüt" kelimesini arayın. Bunu buluyoruz:
<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.
Bir yere gidiyoruz!
Şimdi, gobbledegook'un bu çizgisine odaklanın:
git branch [--set-upstream | --track | --no-track] [-l] [-f] <branchname> [<start-point>]
Bunu buna yoğunlaştırın:
git branch <branchname> [<start-point>]
Ve bitti.
Eclipse'de bunu yapmak için:
Sizin için yerel bir şube oluşturacaktır. Daha sonra değişikliklerinizi her ittiğinizde, şubeniz uzak sunucuya gönderilir.
Bunu Stash'da yapabilirsiniz.
Bunu şu şekilde yapabildim:
git branch new_branch_name `git log -n 1 --skip 3 --format=%H`
Burada atlama değerini girmelisiniz. 0 en son, 1 öncekidir, 2 ondan önceki taahhüttür, vb.
HEAD~1
(burada 1, 1 kesinti belirtir)?
Bu, bir komutla dalı oluşturur:
git push origin <sha1-of-commit>:refs/heads/<branch-name>
Bu yolu yukarıda yayınlananlardan daha iyi tercih ederim, çünkü hemen dal oluşturur (daha sonra ekstra bir itme komutu gerektirmez).
Sourcetree Kullanımı | En kolay yol.
Ben de öyle yaptım:
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
Bu durumda, şube 8a75b001096536b3216022484af3026aa9c7bb5b
ve eski taahhüt oldu master
.
Git deposunun belirli bir işlemine git
Bazen bir git deposu üzerinde çalışırken, projenizin belirli bir zamanda anlık görüntüsünü almak için belirli bir işleme (gözden geçirme) geri dönmek istersiniz. Tüm bunları yapmak için, günlükleri komutla kontrol etmeyi bulabileceğiniz taahhüdün SHA-1 hash'ı:
git log --abbrev-commit --pretty=oneline
size tüm taahhütlerin kompakt bir listesini ve SHA-1 karma kısa versiyonunu verecektir.
Artık gitmek istediğiniz taahhüdün karmasını bildiğinize göre, aşağıdaki 2 komuttan birini kullanabilirsiniz:
git checkout HASH
veya
git reset --hard HASH
ödeme
git checkout <commit> <paths>
Git'e verilen yoldaki mevcut yolların durumunu durumlarıyla değiştirmelerini söyler. Yollar dosya veya dizin olabilir.
Şube verilmemişse git, HEAD taahhüdünü üstlenir.
git checkout <path> // restores path from your last commit. It is a 'filesystem-undo'.
Hiçbir yol belirtilmezse git HEAD
verilen işleme geçer (böylece oturduğunuz ve üzerinde çalıştığınız işi değiştirir).
git checkout branch //means switching branches.
Sıfırla
git reset <commit> //re-sets the current pointer to the given commit.
Eğer bir şubedeyseniz (genellikle olmanız gerekir) HEAD
ve bu şube işlemek için taşınır.
Ayrılmış HEAD
durumdaysanız, git reset yalnızca hareket eder HEAD
. Bir dalı sıfırlamak için, önce şubeyi kontrol edin.
Git reset ve git checkout arasındaki fark hakkında daha fazla bilgi edinmek isterseniz , resmi git blogunu okumanızı tavsiye ederim .
git log --abbrev-commit --pretty=oneline
kısaltması yapılabilirgit log --oneline
Git GUI kullanıcıları için tüm geçmişi (gerekirse) görselleştirebilir ve ardından dallamak istediğiniz taahhüdü sağ tıklayıp şube adını girebilirsiniz.
Visual Studio 2015 ve 2017'de kabul edilen cevabı yapmak için:
Değişikliklere tıklayın (yukarıdaki kırmızı ok)
İşlemler'i (yukarıdaki kırmızı ok) tıklayın ve Açılır Menüden Geçmişi Görüntüle'yi tıklayın.
Ve yeni Sekme açılacak:
Kodunuzun geri dönmesini istediğiniz önceki taahhüdü sağ tıklamanız gerekir:
Yeni bir şube ve voilá ödeme seçin!
Aşağıda, OP sorununun bir parçası olmasa da, hem çok şey yapıyorum hem de bu en azından benim için bir hile adımı: eğer yeni bir şubeyi kontrol etmeden önceki bir taahhüde geri dönmek istiyorsanız, geri dönme (! ?); --mixed veya --hard'ı yeniden tanımlamayı seçmelisiniz:
eğer oldukça basit bir kaynak ağacı kullanırsanız.
Komut satırı tabanlı bir çözüm arıyorsanız cevabımı göz ardı edebilirsiniz. GitKraken'i kullanmanızı öneririm . Bu olağanüstü bir git kullanıcı arabirimi istemcisi. Ana sayfada Git ağacını gösterir. Onlara bakabilir ve projede neler olduğunu öğrenebilirsiniz. Belirli bir taahhüdü seçin, sağ tıklayın ve 'Burada bir şube oluştur' seçeneğini seçin. Şube adını girmeniz için bir metin kutusu verecektir. Şube adını girin, 'Tamam'ı seçin ve hazırsınız. Kullanımı gerçekten çok kolay.