Jika saya harus melakukan, bagaimana saya bisa cabang dari n-3 commit?
Aku bisa melihat hash dari setiap komit.
Anda dapat membuat cabang melalui hash:
git branch branchname <sha1-of-commit>
Atau dengan menggunakan referensi simbolik:
git branch branchname HEAD~3
Untuk checkout cabang ketika menciptakan, menggunakan
git checkout -b branchname <sha1-of-commit or HEAD~3>
Untuk melakukan hal ini pada github.com:
Sihir dapat dilakukan dengan git reset.
git checkout -b your_new_branch
git checkout master
git reset --keras KEPALA~x # dalam kasus anda, x = 3
Mulai saat ini, semua terbaru x melakukan hanya di cabang baru, tidak anda sebelumnya kerja cabang (master) lagi.
Jika anda tidak yakin melakukan yang anda inginkan untuk cabang di muka anda dapat melakukan check out dan memeriksa kode mereka (lihat sumber, menyusun, menguji) oleh
git checkout <sha1-of-commit>
setelah anda menemukan komit anda ingin cabang dari anda dapat melakukannya dari dalam melakukan (yaitu tanpa kembali ke master pertama) hanya dengan membuat cabang di biasa cara:
git checkout -b <branch_name>
Cara cepat untuk melakukannya pada Github repo akan menjadi sebagai berikut:
Cukup jalankan :
git checkout -b branch-name <commit>
Misalnya :
git checkout -b import/january-2019 1d0fa4fa9ea961182114b63976482e634a8067b8
The checkout
perintah dengan parameter -b
akan membuat cabang baru DAN akan beralih anda untuk itu
Untuk melakukan hal ini di Eclipse:
Ini akan menciptakan sebuah cabang lokal untuk anda. Kemudian setiap kali anda mendorong perubahan, cabang anda akan didorong ke remote server.
Saya dapat melakukannya seperti berikut:
git branch new_branch_name `git log -n 1 --skip 3 --format=%H`
Di mana anda harus memasukkan melewatkan nilai. 0 adalah yang terbaru, 1 sebelumnya, 2 adalah melakukan sebelum itu, dll.
Yang bagus yang terkait pertanyaannya adalah: Bagaimana sih anda mengetahui ini menggunakan --help
pilihan dari git? Let's coba ini:
git branch --help
Kita lihat output ini:
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.
Pencarian melalui teks berikutnya untuk kata "melakukan". Kami menemukan ini:
<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.
Kami'kembali mendapatkan suatu tempat!
Sekarang, fokus pada baris ini dari gobbledegook:
git branch [--set-upstream | --track | --no-track] [-l] [-f] <branchname> [<start-point>]
Mengembun yang ini:
git branch <branchname> [<start-point>]
Dan dilakukan.
Pergi tertentu untuk melakukan sebuah repositori git
Kadang-kadang ketika bekerja pada sebuah repositori git anda ingin kembali ke spesifik komit (revisi) untuk memiliki sebuah snapshot dari proyek anda pada waktu tertentu. Untuk melakukan itu semua yang anda butuhkan SHA-1 hash komit mana anda dapat dengan mudah menemukan memeriksa log dengan perintah:
git log --abbrev-commit --pretty=oneline
yang akan memberikan anda daftar kompak semua komit dan versi pendek dari hash SHA-1.
Sekarang bahwa anda tahu hash komit anda ingin pergi ke anda dapat menggunakan salah satu dari berikut 2 perintah:
git checkout HASH
atau
git reset --hard HASH
checkout
git checkout <melakukan> <jalan>
Memberitahu git untuk menggantikan saat ini keadaan jalan dengan keadaan mereka dalam melakukan. Jalan dapat file atau direktori.
Jika ada cabang yang diberikan, git mengasumsikan KEPALA komit.
git checkout <path> // restores path from your last commit. It is a 'filesystem-undo'.
Jika tidak ada jalan yang diberikan, git bergerak KEPALA
yang diberikan untuk melakukan (sehingga mengubah komit anda're duduk dan bekerja).
git checkout branch //means switching branches.
ulang
git reset <commit> //re-sets the current pointer to the given commit.
Jika anda berada di sebuah cabang (anda biasanya harus), KEPALA
dan cabang ini tergerak untuk melakukan.
Jika anda berada di terpisah KEPALA negara
, git reset tidak hanya bergerak KEPALA
. Untuk me-reset cabang, pertama check it out.
Jika anda ingin tahu lebih banyak tentang perbedaan antara git reset dan git checkout saya akan merekomendasikan untuk membaca resmi git blog.
Ini adalah apa yang saya lakukan:
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
Dalam hal ini, 8a75b001096536b3216022484af3026aa9c7bb5b
dan lama komit milik master
cabang.
Untuk melakukan jawaban yang diterima di Visual Studio 2015 & 2017:
Klik di perubahan (panah merah di atas)
Klik pada Tindakan (panah merah di atas) dan klik di View History pada Menu DropDown
Dan Tab baru akan terbuka:
Dan anda harus klik kanan commit sebelumnya bahwa anda ingin kode anda untuk kembali ke:
Memilih checkout cabang baru dan voilá!
Di bawah ini, meskipun bukan merupakan bagian dari OP pertanyaan, tapi aku melakukan keduanya dan yang satu ini adalah trik langkah, setidaknya untuk saya: jika anda ingin kembali ke commit sebelumnya, tanpa checkout cabang baru, TIDAK memilih kembali(!?); anda harus memilih mendefinisikan --dicampur atau-keras:
Hal ini menciptakan cabang dengan satu perintah:
git push origin <sha1-of-commit>:refs/heads/<branch-name>
Saya lebih suka cara ini lebih baik daripada yang diterbitkan atas, karena itu menciptakan cabang segera (tidak memerlukan dorongan ekstra perintah sesudahnya).
Jika anda mencari untuk command-line berbasis solusi, anda dapat mengabaikan jawaban saya. Saya akan sarankan anda untuk menggunakan GitKraken. It's yang luar biasa git UI klien. Ini menunjukkan Git pohon pada homepage. Anda hanya dapat melihat mereka dan tahu apa yang terjadi dengan proyek. Hanya memilih melakukan, klik kanan di atasnya dan pilih opsi 'Membuat cabang di sini'. Ini akan memberikan anda sebuah text box untuk memasukkan nama cabang. Masukkan nama cabang, pilih 'OK' dan anda ditetapkan. It's benar-benar sangat mudah untuk digunakan.