Saya pikir notasi git slash ini mungkin paling baik dipahami dengan melihat ke dalam .git
folder Anda .
Sebagai contoh, ini adalah pohon .git saya yang agak disingkat untuk basis sumber LibreOffice.
Di linux sudo apt-get install tree
bermanfaat untuk melihatnya.
Di Windows saya pikir tree
perintah itu mungkin masih berfungsi.
Gulir ke bawah dan lihat referensi (alias 'referensi') di dekat bagian bawah:
$ tree
.
├── branches
├── config
├── description
├── FETCH_HEAD
├── gitk.cache
├── HEAD
├── hooks
│ ├── applypatch-msg.sample
...
├── index
├── info
│ └── exclude
├── logs
│ ├── HEAD
│ └── refs
│ ├── heads
│ │ ├── master
│ │ └── remotes
│ │ └── origin
│ └── remotes
│ └── origin
│ ├── distro
│ │ ├── cib
│ │ │ └── libreoffice-6-0
│ │ ├── collabora
│ │ │ └── cp-6.0
│ │ └── lhm
│ │ └── libreoffice-5-2+backports
│ ├── HEAD
│ ├── libreoffice-6-2
│ ├── master
│ └── private
│ └── mst
│ └── sw_redlinehide_4a
├── objects
│ ├── info
│ └── pack
│ ├── pack-b80087dc57e2b3315f449ca0f1aaa91987bf0c5e.idx
│ ├── pack-b80087dc57e2b3315f449ca0f1aaa91987bf0c5e.pack
│ ├── pack-eb4e6808029e712d8d9c2671accbbd98aaeb9a04.idx
│ └── pack-eb4e6808029e712d8d9c2671accbbd98aaeb9a04.pack
├── ORIG_HEAD
├── packed-refs
└── refs
├── heads
│ ├── master
│ └── remotes
│ └── origin
├── remotes
│ └── origin
│ ├── distro
│ │ ├── cib
│ │ │ └── libreoffice-6-0
│ │ ├── collabora
│ │ │ └── cp-6.0
│ │ └── lhm
│ │ └── libreoffice-5-2+backports
│ ├── HEAD
│ ├── libreoffice-6-2
│ ├── master
│ └── private
│ └── mst
│ └── sw_redlinehide_4a
└── tags
└── libreoffice-6-2-branch-point
32 directories, 45 files
Mungkin kurang membingungkan jika ditata seperti ini, tetapi tidak:
repositories (i.e. independent trees)
├──local
│ └──master
│
└──origin1
│ └──master
└──origin2
└──master
Kami memiliki tiga jenis referensi dasar: kepala , jarak jauh , dan tag .
.git / refs / kepala memegang master lokal kami .
.git / refs / remote dapat menampung sejumlah remote, meskipun saat ini kami hanya memiliki asal di dalamnya.
.git / refs / tag (dibahas di tempat lain).
asal demikian, adalah satu-satunya kita dan jauh. Itu memegang asal / master .
Kami menemukan bahwa kami memiliki 2 HEADS (pointer ke cabang saat ini), satu lokal, dan satu remote:
$ cat .git/HEAD # local: HEAD -> master
ref: refs/heads/master
$ cat .git/refs/remotes/origin/HEAD # remote origin: HEAD -> master
ref: refs/remotes/origin/master
Jika Anda daftar cabang Anda :
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/aoo/aw080
remotes/origin/aoo/trunk
remotes/origin/distro/capgemini/cg-4.1
remotes/origin/distro/cib/libreoffice-5-0
remotes/origin/distro/cib/libreoffice-5-1
remotes/origin/distro/cib/libreoffice-5-2
...
- Cabang pertama yang terdaftar ( master ) adalah satu-satunya yang bukan remote. Jadi dalam hal ini kami memiliki satu cabang lokal. Di sinilah kami akan memulai pekerjaan kami sendiri, untuk cabang-cabang baru kami dan komitmen selanjutnya.
Selanjutnya, Anda mungkin memiliki banyak cabang pelacakan jarak jauh, dan kami lakukan di sini. Anda tahu ini adalah cabang pelacakan jarak jauh karena mereka diawali dengan ' remote / '. Yang ditampilkan di sini adalah untuk asal bernama remote.
Jadi baris kedua adalah pointer cabang saat ini asal . Remote / asal: HEAD --points to -> master. Ini menunjukkan bahwa dalam repositori jarak jauh, cabang saat ini adalah cabang mereka yang bernama master , (jangan bingung dengan cabang lokal kami yang bernama master ).
Cabang yang tersisa tidak ditemukan di .git / refs / tree Anda, tetapi Anda akan menemukannya di .git/packed-refs
.
Ketika kita git fetch kita download perubahan dari repositori jauh, ke dalam repositori pelacakan jarak jauh kami.
Ketika kita git menggabungkan kita menggabungkan perubahan di repositori pelacakan lokal, jauh ini ke cabang lokal kami atau cabang, dalam hal ini ke dalam cabang utama kami.
(Ketika kita git pull, kita melakukan kedua langkah ini dalam satu operasi.)
Ini juga menarik untuk dicatat lokal ini UUID dan jarak jauh ini untuk master yang saat ini mengarah ke simpul yang sama (alias 'komit'):
$ cat refs/heads/master # local master
1ca409292272632f443733450313de5a82c54a9c
$ cat refs/remotes/origin/master # remote origin master
1ca409292272632f443733450313de5a82c54a9c
Jadi master lokal kami menunjuk ke tempat yang sama dengan master asal remote:
[local] master = [remote] origin master
Akhirnya, saya pikir ini juga berguna untuk melihatnya .git/packed-refs
$ cat packed-refs
# pack-refs with: peeled fully-peeled
3c1d4742e649fe9c8aed8c2817fe3e1f3364f298 refs/remotes/origin/aoo/aw080
e87c8b7922e9a73e0abb7f9a7a47c9ac3374a826 refs/remotes/origin/aoo/trunk
b70fdffb041c12f124dcc0822b61bf3450e53137 refs/remotes/origin/distro/capgemini/cg-4.1
5dbc3f1754809b9489faaf380b1a4bdbcfbb6205 refs/remotes/origin/distro/cib/libreoffice-5-0
cfdbc96ca47d68d6785fd21829a8d61f49d6e591 refs/remotes/origin/distro/cib/libreoffice-5-1
5189c8c47461ef09739086e55512fc6a10245273 refs/remotes/origin/distro/cib/libreoffice-5-2
3bee5917569ca8e6ee3b086458f5b1a917b88ca1 refs/remotes/origin/distro/cib/libreoffice-5-3
92fbe703f9ca480d3a2b8610d87e991c729edf77 refs/remotes/origin/distro/cib/libreoffice-5-4
05c0a5df66cc69d75280f05b804cf82f3387d42b refs/remotes/origin/distro/cib/libreoffice-6-0
7fe193e759b24b90852e6e327115b77114d7b119 refs/remotes/origin/distro/cib/libreoffice-6-1
8187f7aa413e7ef7b377eea2b057d336bf256867 refs/remotes/origin/distro/collabora/cd-5.3
7a6b608591e21ef61dc05cff9fc58da531035755 refs/remotes/origin/distro/collabora/cd-5.3-3.1
....
Tidak diragukan lagi ini menyisakan lebih banyak pertanyaan daripada jawaban, tetapi saya pikir ini dapat mulai membantu Anda menjawab pertanyaan Anda sendiri tentang apa itu.