Jika saya memiliki n komit, bagaimana saya bisa bercabang dari komit n-3?
Saya bisa melihat hash dari setiap commit.
git
branch
git-branch
membagikan doug
sumber
sumber
git push origin BRANCH_NAME
<sha1-of-commit>
jalankangit checkout -b <name-of-branch> <sha1-of-commit>
tetapi jika cabang sudah adagit checkout -B <name-of-branch> <sha1-of-commit>
Untuk melakukannya di github.com:
sumber
Keajaiban dapat dilakukan dengan git reset .
Buat cabang baru dan alihkan ke sana (jadi semua komit terbaru Anda disimpan di sini)
git checkout -b your_new_branch
Beralih kembali ke cabang kerja sebelumnya (anggap masternya)
git checkout master
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).
sumber
git reset --hard
bukan ide yang baik jika Anda sudah mendorong komit ke asal ...git push --force
jika Anda sudah mendorong cabang sebelumnyaJika Anda tidak yakin komit mana yang ingin Anda cabut sebelumnya, Anda dapat memeriksa komit dan memeriksa kodenya (lihat sumber, kompilasi, uji) dengan
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 biasa:
sumber
sumber
git branch branchname <sha1-of-commit>
" (dari jawaban yang diterima)?git checkout -b
untuk membuat cabang baru.Cara cepat untuk melakukannya di repo Github Anda adalah sebagai berikut:
sumber
Cukup jalankan:
Sebagai contoh :
The
checkout
perintah dengan parameter-b
akan membuat cabang baru dan itu akan beralih Anda ke itusumber
git fetch
&git branch
perintah pada folder proyek Anda menggunakan terminal, kemudian periksa apakah cabang fitur ada, jika ini adalah kasus maka ya, tentu saja Anda tidak dapat membuat cabang dari cabang yang dihapus, Anda juga bisa mengembalikan penghapusan cabang jika cabang hilangPertanyaan terkait yang bagus adalah: Bagaimana cara Anda mengetahuinya menggunakan
--help
opsi git? Mari kita coba ini:Kami melihat output ini:
Gobbledegook.
Cari melalui teks berikutnya untuk kata "komit". Kami menemukan ini:
Kami pergi ke suatu tempat!
Sekarang, fokuslah pada baris buku pegangan ini:
Padatkan itu menjadi ini:
Dan selesai.
sumber
Untuk melakukan ini di Eclipse:
Ini akan membuat cabang lokal untuk Anda. Kemudian setiap kali Anda mendorong perubahan, cabang Anda akan didorong ke server jarak jauh.
sumber
Anda dapat melakukannya di Stash.
sumber
Saya bisa melakukannya seperti ini:
Di mana Anda harus memasukkan nilai lewati. 0 adalah yang terbaru, 1 adalah yang sebelumnya, 2 adalah komit sebelum itu, dll.
sumber
HEAD~1
(di mana 1 menentukan 1 komit kembali)?Ini menciptakan cabang dengan satu perintah:
Saya lebih suka cara ini lebih baik daripada yang diterbitkan di atas, karena itu membuat cabang segera (tidak memerlukan perintah push tambahan setelah itu).
sumber
Menggunakan Sourcetree | Cara termudah.
sumber
Inilah yang saya lakukan:
Dalam hal ini,
8a75b001096536b3216022484af3026aa9c7bb5b
adalah dan komit lama milikmaster
cabang.sumber
Pergi ke komit tertentu dari repositori git
Kadang-kadang 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:
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:
atau
Periksa
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 mengasumsikan commit HEAD.
Jika tidak ada jalur yang diberikan, git bergerak
HEAD
ke komit yang diberikan (sehingga mengubah komit yang Anda duduki dan kerjakan).atur ulang
Jika Anda berada di cabang (biasanya Anda seharusnya),
HEAD
dan cabang ini dipindahkan untuk melakukan.Jika Anda dalam
HEAD
kondisi terpisah , git reset hanya bergerakHEAD
. 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 .
sumber
git log --abbrev-commit --pretty=oneline
dapat disingkatgit log --oneline
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.
sumber
Untuk melakukan jawaban yang diterima di Visual Studio 2015 & 2017:
Klik perubahan (panah merah di atas)
Klik pada Tindakan (panah merah di atas) dan klik di Lihat Riwayat di Menu DropDown
Dan Tab baru akan terbuka:
Dan Anda harus mengklik kanan komit sebelumnya yang ingin Anda kembalikan ke:
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 kembalikan (! ?); Anda harus memilih redefine --mixed atau --hard:
sumber
jika Anda menggunakan pohon sumber yang cukup lurus ke depan.
sumber
Jika Anda mencari solusi berbasis baris perintah, Anda dapat mengabaikan jawaban saya. Saya akan menyarankan Anda untuk menggunakan GitKraken . Ini adalah klien UI git yang luar biasa. Ini menunjukkan pohon Git di beranda. Anda bisa melihat mereka dan tahu apa yang sedang terjadi dengan proyek tersebut. Cukup pilih komit tertentu, klik kanan padanya dan pilih opsi 'Buat cabang di sini'. Ini akan memberi Anda kotak teks untuk memasukkan nama cabang. Masukkan nama cabang, pilih 'OK' dan Anda ditetapkan. Ini benar-benar sangat mudah digunakan.
sumber