Ambil cabang tertentu menggunakan git

19

Saya ingin mengunduh kode sumber dari cabang master-next menggunakan git seperti yang dijelaskan dalam wiki Xilinx .

Saya mencoba ini:

#git clone git://github.com/Xilinx/u-boot-xlnx/tree/master-next.git

Initialized empty Git repository in /home/Hannan/master-next/.git/
fatal: remote error:
Xilinx/u-boot-xlnx/tree/master-next is not a valid repository name
Email [email protected] for help

Bahkan ini gagal:

# git clone git://github.com/Xilinx/tree/master-next/u-boot-xlnx.git
Initialized empty Git repository in /home/Hannan/u-boot-xlnx/.git/
fatal: remote error:
Xilinx/tree/master-next/u-boot-xlnx is not a valid repository name
Email [email protected] for help

Perintah yang berfungsi adalah:

 git clone git://github.com/Xilinx/u-boot-xlnx.git

Tetapi bagaimana saya tahu bahwa ini memang akan mengambil cabang master-berikutnya dan bukan cabang master ? Bagaimana cara mengambil cabang tertentu dengan benar menggunakan git?

Saya menggunakan RHEL 6, diakses melalui Putty.

pengguna2799508
sumber

Jawaban:

16

Seperti pesan kesalahan memberitahu Anda, git clonemengharapkan repositori git. Anda tidak bisa "menambahkan" nama cabang di jalur seperti itu. Lihat cabang di git .

Anda dapat mengkloning satu cabang (dan riwayatnya): git clone <url> --branch <branch> --single-branch

Lihat git help clone.

Tetapi perintah clone yang Anda jalankan memberi Anda salinan seluruh repositori, Anda dapat melihat cabang-cabang yang ada dengan git branchdan lebih detail tentang mereka git show-branch.

Beralihlah ke cabang yang Anda inginkan git checkout branch-name.

Bab-bab pertama buku Pro Git (tersedia online) memberikan rincian lebih lanjut tentang perintah dasar.

Leiaz
sumber
"Perintah klon yang Anda jalankan memberi Anda salinan seluruh repositori" .Apakah repositori berarti kedua cabang digabung?
user2799508
Tidak, mereka tidak digabung. Cabang di git bukan salinan dari seluruh direktori, seperti yang dijelaskan di sini .
Leiaz
Apa yang saya lakukan adalah ini: "git clone -b master-next github.com/Xilinx/u-boot-xlnx.git " apakah ini tidak benar?
user2799508
Anda tidak perlu mengkloning lagi. Perintah yang Anda tunjukkan dalam pertanyaan Anda memberi Anda repositori dengan semua cabang. Tapi ini juga benar. Ini setara dengan melakukan git checkout master-nextsetelah kloning.
Leiaz
13

Perintah ini harus bekerja:

$ git fetch origin [branch]

Perintah di atas hanya mengambil metadata dari repositori jarak jauh, tidak menggabungkan sumber.

Jika Anda ingin mengambil dan menggabungkan sumber, perintahnya adalah:

$ git pull origin [branch]

Hati-hati dengan cabang tempat Anda menjalankan perintah gabung. Ini akan menjadi tempat sumber digabung.

raulsaeztapia
sumber
Jawaban Anda secara teknis benar tetapi saya pikir itu mungkin mendapat manfaat dari beberapa pemeriksaan tata bahasa / penulisan ulang.
Sami Laine
ini berfungsi dengan baik thx
nwgat
4

repositori git berisi semua cabang (tetapi perbedaan dikompresi dan hanya karena itu jarang masalah ukuran).

Oleh karena itu, Anda dapat mengkloning seluruh proyek seperti yang telah Anda lakukan dengan sukses. Ini adalah cara standar untuk mendapatkan repositori, bahkan jika Anda hanya tertarik pada satu cabang.

Struktur .git kemudian akan menyertakan semua cabang yang dilakukan pada repositori itu.

Untuk menggunakan cabang tertentu lakukan git checkout [branch_name] Jika cabang ada file akan tersedia secara lokal (hanya itu, file saat ini di direktori proyek).

git status kemudian akan menunjukkan cabang mana yang merupakan cabang saat ini, misalnya:

Menurut Leiaz seseorang dapat mengkloning cabang tertentu. Dalam praktiknya saya belum pernah melakukan ini atau melihat orang lain menggunakannya. Pada penelitian lebih lanjut, saya melihatnya relatif baru, ditambahkan pada git 1.7.10 (April 2012): opsi 'git clone --single-branch' untuk membatasi kloning pada satu cabang (kejutan!); tag yang tidak menunjukkan riwayat cabang tidak diambil. Sebagai contoh:

git clone -b master-next --single-branch git://github.com/Xilinx/

masukkan deskripsi gambar di sini Di sini, untuk aplikasi "tautan" saya, saya memeriksa cabang v3.0.10

Michael Durrant
sumber
1
Saya juga belum pernah melakukannya, saya ingat melihat opsi itu. Saya kira itu jarang digunakan karena cabang tambahan "murah" dalam ukuran.
Leiaz