Apa yang ada checkout
di git?
Saya tahu begitu Anda melakukannya checkout
ke cabang tertentu, HEAD
poin ke cabang itu. Tapi apa sebenarnya artinya itu? Apakah itu berarti saya kemudian dapat bekerja di cabang itu? Jika ya, maka, tanpa memeriksa cabang, saya tidak dapat mengerjakannya?
Juga, apa remote checkout
artinya? Bagaimana ini berguna?
git
git-checkout
daehaai
sumber
sumber
Jawaban:
Seperti yang Anda catat,
HEAD
adalah label yang mencatat di mana Anda berada di pohon komit. Itu bergerak bersama Anda ketika Anda berpindah dari satu komitmen ke komitmen lainnya.git checkout <commit>
adalah mekanisme dasar untuk bergerak di sekitar pohon komit, memindahkan fokus Anda (HEAD
) ke komit yang ditentukan.Komit dapat ditentukan oleh salah satu dari sejumlah cara, melakukan hash, nama cabang, nama tag, sintaks relatif (
HEAD^
,HEAD~1
, dll) dan sebagainya. Seringkali berguna untuk mempertimbangkan checkout sebagai berganti cabang, dan ada beberapa opsi yang bekerja dari perspektif itu, tetapi semuanya mereferensikan komit.Untuk menyelesaikan sebuah komit memiliki beberapa pengaruh sisi selain bergerak
HEAD
.-b
opsi cabang baru akan dibuat berdasarkan komit saat ini dan kemudian dibuat aktif.--track
opsi, cabang yang diperiksa dapat diberi tahu tentang cabang jarak jauh--orphan
opsi cabang baru dibuat (seperti dengan-b
) tetapi tidak akan didasarkan pada komit yang ada.Ada beberapa opsi lagi, yang dapat Anda baca di halaman manual git checkout , yang semuanya berputar dari satu komit ke komit lainnya - hanya berbeda dalam efek apa yang dimiliki pemindahan selain pemindahan
HEAD
.sumber
git checkout <commit> <path>
tidak bertukar cabang.git checkout <path>
.Izinkan saya menjelaskan beberapa kasus penggunaan checkout dengan file, folder dan cabang sehingga dapat membantu dalam memahami.
Katakanlah kita memiliki folder bernama
dev
danindex.html
juga Semuanya dilacak dan direktori kerja bersih.Jika saya tidak sengaja mengubah nama file
index.html
dan saya ingin membatalkannya, saya hanya akan menggunakannyagit checkout index.html
untuk memulihkan status file tersebut dari repositori cabang yang saat ini dipilih.Sekarang jika saya membuat beberapa perubahan di
dev
folder dan ingin memulihkannya. Saya dapat menggunakangit checkout dev
tetapi bagaimana jika sudah ada cabang yang bernamadev
daripada memeriksa folder itu, itu akan menarik cabang itu. Untuk menghindari itu saya lebih suka melakukannyagit checkout -- dev
.Sekarang di sini tanda hubung ganda telanjang adalah singkatan dari cabang saat ini dan meminta git untuk folder
dev
dari cabang yang saat ini dipilih.Demikian pula Jika saya melakukannya
git checkout alpha dev
akan menurunkan folder dev dari cabang alpha.Jawaban ini untuk pertanyaan pertama Anda 'git checkout really mean'.
sumber
"Untuk memeriksa" berarti Anda mengambil komit yang diberikan dari repositori dan membuat ulang status file terkait dan pohon direktori di direktori kerja.
Ketika Anda memeriksa komit yang bukan merupakan kepala cabang (misalnya
git checkout HEAD~2
), Anda berada pada apa yang disebut kepala terpisah . Anda dapat membuat komit di sini, tetapi begitu Anda beralih ke cabang lain, komit tersebut tidak akan dapat dipulihkan oleh nama cabang dan bahkan mungkin dihapus oleh pengumpul sampah setelah beberapa waktu.sumber