Mari kita mulai dengan repositori Git. Kami akan membuat folder bernama proyek.git dan inisialisasi untuk menjadi repositori jarak jauh:
$ mkdir proyek.gitproyek $cd.git/
$ git init --bare
Repositori Git kosong yang diinisialisasi di /Users/zakh_eecs/_work/LearnGIT/git_remote_repository/
proyek.git/
Sekarang pergi ke lokasi baru di mana Anda dapat membuat folder bersih. Buat folder project_source dan inisialisasi untuk Git:
$ mkdir project_source$cd project_source
$ git init
Repositori Git kosong yang diinisialisasi di /Users/zakh_eecs/_work/LearnGIT/git_branching_source/
sumber_proyek/.git/
$ sentuh ReadMe.txt
$ git tambahkan -A
$ git commit -m "Komit Awal"
[master (root-commit) 176134f] Komitmen Awal
1 file diubah, 0 penyisipan (+), 0 penghapusan (-)
buat mode 100644 ReadMe.txt
project_setup adalah direktori Git dengan ReadMe.file txt. Namun, itu tidak terhubung ke repositori jarak jauh kami. Ayo siapkan proyek.git menjadi repositori jarak jauh untuk project_source. Kita dapat mencapai ini melalui perintah berikut:
$ git remote tambahkan Origin /Users/zakh_eecs/_work/LearnGIT/git_remote_repository/project.git$ git push asal master origin
Menghitung benda: 3, selesai.
Objek penulisan: 100% (3/3), 213 byte | 0 byte/dtk, selesai.
Total 3 (delta 0), digunakan kembali 0 (delta 0)
Ke /Users/zakh_eecs/_work/LearnGIT/git_remote_repository/project.git
* [cabang baru] master -> master
Dengan perintah git remote add Origin, kami telah membuat koneksi antar proyek.git dan project_source. Dengan perintah master git Push Origin, kami telah mendorong cabang master kami ke repositori jarak jauh.
Mari kita periksa cabang kita (masih di folder project_source):
$git cabang* tuan
$ git cabang -r
asal/master
$ git cabang -a
* tuan
remote/asal/master
Perintah pertama hanya menampilkan cabang lokal. Opsi -r menunjukkan cabang jarak jauh. Dan opsi -a menunjukkan lokal dan jarak jauh.
Mari kita buat beberapa cabang di direktori kerja kita:
$ git pengembangan cabang$ git perbaikan terbaru cabang
$ git cabang eksperimental
$ git cabang -a
pengembangan
eksperimental
perbaikan terbaru
* tuan
remote/asal/master
Kami telah membuat cabang yang disebut pengembangan, perbaikan terbaru, dan eksperimental. Mereka muncul di daftar cabang lokal kami. Tapi di remote/asal, hanya ada cabang master karena hanya itu yang kami dorong. Master bintang(*) berarti kita masih berada di cabang master lokal. Mari masuk ke cabang pengembangan, komit perubahan dan dorong perubahan itu ke repositori jarak jauh.
$ git pengembangan checkoutBeralih ke 'pengembangan' cabang
$ echo abc > ReadMe.txt
$ git tambahkan -A
$ git commit -m "Cabang pengembangan yang dimodifikasi"
[pengembangan dd9933e] Cabang pengembangan yang dimodifikasi
1 file diubah, 1 penyisipan (+)
$ git push pengembangan asal
Menghitung benda: 3, selesai.
Objek penulisan: 100% (3/3), 257 byte | 0 byte/dtk, selesai.
Total 3 (delta 0), digunakan kembali 0 (delta 0)
Ke /Users/zakh_eecs/_work/LearnGIT/git_remote_repository/project.git
* [cabang baru] pengembangan -> pengembangan
Mari kita periksa semua cabang sekarang:
$ git cabang -a* pengembangan
eksperimental
perbaikan terbaru
menguasai
remote/asal/pengembangan
remote/asal/master
Kami melihat bahwa kami berada di cabang pengembangan lokal, tetapi ada juga cabang pengembangan jarak jauh. Ketika kami mendorong perubahan kami dengan pengembangan git Push Origin, itu menciptakan cabang pengembangan di remote/asal.
Sekarang mari keluar dari project_source dan temukan tempat baru di mana kita dapat memiliki folder baru. Di sini kita akan mengkloning repositori jarak jauh dengan perintah berikut:
$ git clone /Users/zakh_eecs/_work/LearnGIT/git_remote_repository/project.gitMengkloning ke 'proyek'…
selesai.
Kami telah mengkloning salinan baru yang disebut proyek dari proyek.git. Masuk ke folder proyek dan periksa cabang:
proyek $cd$git cabang
* tuan
Ketika Git membuat klon awal dari repositori jarak jauh, Git hanya mendapatkan cabang master. Jika kita menggunakan opsi -a, kita melihat:
$ git cabang -a* tuan
remote/asal/HEAD -> asal/master
remote/asal/pengembangan
remote/asal/master
Perhatikan tidak ada cabang pengembangan lokal. Juga, kami tidak pernah mendorong hotfix dan cabang eksperimental dari project_source ke project.git, jadi kami tidak melihatnya. Repositori jarak jauh memiliki cabang master dan pengembangan (remote/Origin/HEAD -> Origin/master bukan cabang, itu hanya memberi tahu Anda ke mana HEAD menunjuk).
Mari kita masukkan cabang pengembangan ke lingkungan kerja kita:
$ git ambil --semuaMengambil asal
$ git pengembangan checkout
Pengembangan cabang diatur untuk melacak pengembangan cabang jarak jauh dari asal.
Beralih ke 'pengembangan' cabang baru
Jika Anda menggunakan Git versi lama, Anda mungkin harus menggunakan:
$ git checkout pengembangan asal/pengembanganSekarang jika kita menggunakan perintah cabang, kita mendapatkan:
$ git cabang -a* pengembangan
menguasai
remote/asal/HEAD -> asal/master
remote/asal/pengembangan
remote/asal/master
Kita dapat membuat perubahan pada cabang pengembangan, melakukan perubahan dan kemudian mendorongnya menggunakan perintah pengembangan git push origin.
Kesimpulannya
Saat Anda bekerja dengan GitHub dan BitBucket, Anda mungkin menggunakan tautan HTTPS atau SSH untuk terhubung ke repositori jarak jauh Anda. Jadi Anda akan mengatur Asal Anda ke tautan itu. Tetapi prinsip-prinsip cabang jarak jauh sama seperti yang dijelaskan di sini.
Pelajaran lanjutan:
- https://git-scm.com/docs/git-branch
- https://git-scm.com/book/en/v2/Git-on-the-Server-Setting-Up-the-Server
- https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/
- https://help.github.com/articles/push-to-a-remote/