Paling baik dijelaskan pada contoh: Saya di cabang 0,58 repositori dan ini cara saya menarik:
git pull origin 0.58
Saat saya memanggil "git pull", saya mendapatkan:
ip238:openlierox az$ git pull
You asked me to pull without telling me which branch you
want to merge with, and 'branch.0.58.merge' in
your configuration file does not tell me either. Please
name which branch you want to merge on the command line and
try again (e.g. 'git pull <repository> <refspec>').
See git-pull(1) for details on the refspec.
If you often merge with the same branch, you may want to
configure the following variables in your configuration
file:
branch.0.58.remote = <nickname>
branch.0.58.merge = <remote-ref>
remote.<nickname>.url = <url>
remote.<nickname>.fetch = <refspec>
See git-config(1) for details.
Sepertinya saya mungkin lupa beberapa opsi (--track?) Ketika saya memeriksa cabang itu. Bagaimanapun, saya telah mengatur ini sekarang:
git config branch.0.58.merge 0.58
git config branch.0.58.remote origin
Dan ini sepertinya berhasil. Kemudian, hanya karena minat, saya melihat beberapa cabang lain tentang pengaturan ini:
ip238:openlierox az$ git config branch.0.57.merge
refs/heads/0.57
ip238:openlierox az$ git config branch.0.57.remote
origin
Saya bertanya-tanya sekarang, apakah ada perbedaan antara "0,58" atau haruskah saya menentukan "refs / heads / 0.58"?
Apa sebenarnya perbedaannya?
heads
dengan "s".Jawaban:
A
ref
adalah segala sesuatu yang mengarah ke komit, misalnya, cabang (kepala), tag, dan cabang jarak jauh. Anda harus melihat head, remote, dan tag di.git/refs
direktori Anda , dengan asumsi Anda memiliki ketiga jenis ref di repositori Anda.refs/heads/0.58
menentukan cabang bernama 0,58. Jika Anda tidak menentukan namespace apa ref tersebut, git akan mencari di namespace default. Hal ini membuat penggunaan 0,58 menjadi ambigu - Anda bisa memiliki sebuah cabang dan sebuah tag bernama 0,58.sumber
refs/heads/
danrefs/remotes/
danrefs/tags/
Hanya untuk seseorang yang penasaran -
git show-ref
, yang tersedia sejak Git v1.8.2.2, akan menampilkan semua referensi yang Anda miliki di repositori lokal Anda.sumber
git log --decorate=full
akan menunjukkan nama lengkap referensi dalam sejarahLihat,
branchName
perlu diselesaikan sepenuhnya sebelum GIT benar-benar dapat mengidentifikasinya. Nama yang diselesaikan sepenuhnya akan menjadirefs/heads/branchName
.Salah satu perintah terkenal
git checkout branchName
sebenarnya secara otomatis menyelesaikannya sepenuhnya untuk mengidentifikasi di mana Anda ingin melakukan pembayaran. Perhatikan bahwa itu melakukannya secara otomatis maka kita tidak pernah menulisnya sendiri sepenuhnya.Bagaimana cara melakukannya? Mari kita lihat di sini
Jadi dengan 6 langkah di atas, ia mencoba menyelesaikan apa ini
branchName
. Oleh karena itu kita tidak perlu memberikan branchName yang telah diselesaikan sepenuhnya padanya.Lihat di sini dan di sini juga.
Juga, masuk ke
.git
direktori Anda dan lihat di dalamref
folder.sumber