pengembangan-web-mp-pd.com

Cabang dari komit sebelumnya menggunakan Git

Jika saya memiliki n komit, bagaimana saya bisa bercabang dari komit n-3?

Saya bisa melihat hash dari setiap commit.

1471
dole doug

Anda dapat membuat cabang melalui hash:

git branch branchname <sha1-of-commit>

Atau dengan menggunakan referensi simbolis:

git branch branchname HEAD~3

Untuk checkout cabang saat membuatnya, gunakan

git checkout -b branchname <sha1-of-commit or HEAD~3>
2082
CB Bailey

Untuk melakukan ini di github.com:

  1. Pergi ke proyek Anda.
  2. Klik pada "Komit".
  3. Klik pada <> ("Jelajahi repositori pada titik ini dalam sejarah") pada komit yang ingin Anda cabut.
  4. Klik pada "tree: xxxxxx" di kiri atas. Tepat di bawah bilah statistik bahasa, Anda akan mendapatkan opsi untuk "Temukan atau Buat Cabang" (cukup ketik nama cabang baru di sana) Branch from previous commit
216
OneSolitaryNoob

Keajaiban dapat dilakukan dengan git reset .

  1. Buat cabang baru dan alihkan ke sana (jadi semua komit terbaru Anda disimpan di sini)

    git checkout -b your_new_branch

  2. Beralih kembali ke cabang kerja sebelumnya (anggap masternya)

    git checkout master

  3. Hapus komit x terbaru, tetap bersihkan master

    git reset --hard HEAD~x # in your case, x = 3

Mulai saat ini, semua x commit terakhir hanya ada di cabang baru, bukan di cabang kerja Anda sebelumnya (master).

67
Jing Li

Jika Anda tidak yakin komit mana yang ingin Anda cabut sebelumnya, Anda dapat memeriksa komit dan memeriksa kode mereka (lihat sumber, kompilasi, pengujian) dengan

git checkout <sha1-of-commit>

setelah Anda menemukan komit yang ingin Anda cabut dari Anda dapat melakukannya dari dalam komit (yaitu tanpa kembali ke master terlebih dahulu) hanya dengan membuat cabang dengan cara yang biasa:

git checkout -b <branch_name>
62
stanm
git checkout -b <branch-name> <sha1-of-commit>
20
Tyler Long

Cara cepat untuk melakukannya di repo Github Anda adalah sebagai berikut:

  • Temukan komit spesifik dari cabang Anda
  • Di samping id [SHA _, klik 'Telusuri repo pada titik ini dalam riwayat'
  • Di sini Anda dapat membuat cabang baru dari komit ini enter image description here
9
Vatsal Parekh

Untuk melakukan ini di Eclipse:

  • Pergi ke Perspektif "Git Repository Exploring".
  • Luaskan "Tag" dan pilih komit yang ingin Anda buat cabang.
  • Klik kanan pada komit dan pilih "Buat Cabang".
  • Berikan nama cabang.

Ini akan membuat cabang lokal untuk Anda. Kemudian setiap kali Anda Push perubahan Anda, cabang Anda akan didorong ke server jauh.

4
Saurabhcdt

Anda dapat melakukannya di Stash.

  1. Klik komit
  2. Di kanan atas layar klik "Tandai komit ini"
  3. Kemudian Anda dapat membuat cabang baru dari tag yang baru saja Anda buat.
4
David Ruan

Pertanyaan terkait yang bagus adalah: Bagaimana cara Anda mengetahuinya menggunakan opsi --help dari git? Mari kita coba ini:

git branch --help

Kami melihat 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.

Cari melalui teks berikutnya untuk kata "komit". 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 pergi ke suatu tempat!

Sekarang, fokuslah pada baris buku pegangan ini:

git branch [--set-upstream | --track | --no-track] [-l] [-f] <branchname> [<start-point>]

Padatkan itu untuk ini:

git branch <branchname> [<start-point>]

Dan selesai.

3
Purplejacket

Saya bisa melakukannya seperti ini:

git branch new_branch_name `git log -n 1 --skip 3 --format=%H`

Di mana Anda harus memasukkan nilai lewati. 0 adalah yang terbaru, 1 adalah yang sebelumnya, 2 adalah komit sebelum itu, dll.

3
Mike Graf

Cukup jalankan:

git checkout -b branch-name <commit>

Sebagai contoh :

git checkout -b import/january-2019 1d0fa4fa9ea961182114b63976482e634a8067b8

Perintah checkout dengan parameter -b akan membuat cabang baruDANia akan mengalihkan Anda ke sana

2
d1jhoni1b

Inilah 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 adalah dan commit lama milik cabang master.

1
Jaime Montoya

Pergi ke komit tertentu dari repositori git

Terkadang ketika mengerjakan repositori git Anda ingin kembali ke komit (revisi) tertentu untuk mengambil snapshot proyek Anda pada waktu tertentu. Untuk melakukan itu semua yang Anda butuhkan, SHA-1 hash dari commit yang Anda dapat dengan mudah menemukan memeriksa log dengan perintah:

git log --abbrev-commit --pretty=oneline

yang akan memberi Anda daftar ringkas semua komitmen dan versi singkat dari hash SHA-1.

Sekarang Anda tahu hash dari commit yang ingin Anda tuju, Anda dapat menggunakan salah satu dari 2 perintah berikut:

git checkout HASH

atau

git reset --hard HASH

checkout

git checkout <commit> <paths>

Memberitahu git untuk mengganti status lintasan saat ini dengan statusnya di komit yang diberikan. Path dapat berupa file atau direktori.

Jika tidak ada cabang yang diberikan, git menganggap komit HEAD.

git checkout <path> // restores path from your last commit. It is a 'filesystem-undo'.

Jika tidak ada jalur yang diberikan, git memindahkan HEAD ke komit yang diberikan (sehingga mengubah komit yang Anda duduki dan kerjakan).

git checkout branch //means switching branches.

reset

git reset <commit> //re-sets the current pointer to the given commit.

Jika Anda berada di cabang (biasanya Anda seharusnya), HEAD dan cabang ini dipindahkan untuk berkomitmen.

Jika Anda dalam keadaan HEAD terpisah, reset git hanya memindahkan HEAD. Untuk mengatur ulang cabang, periksa dulu.

Jika Anda ingin tahu lebih banyak tentang perbedaan antara git reset dan checkout git saya akan merekomendasikan untuk membaca blog git resmi .

1
Lyes CHIOUKH

 Select Commit

Untuk pengguna Git GUI Anda dapat memvisualisasikan semua riwayat (jika perlu) dan kemudian klik kanan pada komit yang ingin Anda cabut dari dan masukkan nama cabang.

 Enter Branch name

 Visualize all the history

0
user3070485

Untuk melakukan jawaban yang diterima di Visual Studio 2015 & 2017:

 Click in alterations

Klik perubahan (panah merah di atas)

 Click Actions to View History

Klik pada Tindakan (panah merah di atas) dan klik di Lihat Riwayat di Menu DropDown

Dan Tab baru akan terbuka:

 History tab

Dan Anda harus mengklik kanan komit sebelumnya yang ingin kode Anda kembalikan ke:  right click the previous commit

Pilih untuk checkout cabang baru dan voila!

Di bawah, meskipun bukan bagian dari pertanyaan OP, tetapi saya sering melakukan keduanya dan ini adalah langkah jebakan, setidaknya bagi saya: jika Anda ingin kembali ke komit sebelumnya, tanpa checkout cabang baru, JANGAN memilih kembali (! ?); Anda harus memilih redefine --mixed atau --hard:

 right click the previous commit and redefine

0
Marcelo Scofano