Github menambahkan repositori sebagai garpu dari klon yang ada

21

Jadi saya punya repositori git yang saya kloning dari sumber upstream di ghithub. Saya membuat beberapa perubahan untuk itu (yang tidak terikat dan di cabang master). Yang ingin saya lakukan adalah mendorong perubahan saya ke halaman github saya sebagai cabang baru dan memiliki github masih melihatnya sebagai garpu.

Apakah itu mungkin? Saya cukup baru untuk git dan github. Apakah pertanyaan saya masuk akal?

Cara termudah yang bisa saya pikirkan (yang saya yakin adalah cara yang paling sekitar), adalah dengan garpu repo di github. Kloning secara lokal ke direktori yang berbeda. Tambahkan repo asal hulu. Buat cabang di repo bercabang baru itu. Salin perubahan kode saya dengan tangan ke repo lokal baru. Dan kemudian dorong kembali ke github saya.

Apakah ini kasus penggunaan umum bahwa ada cara yang lebih sederhana untuk melakukannya tanpa menduplikasi direktori?

Saya kira saya bertanya di sini sebagai lawan SO karena saya di linux menggunakan command line git dan orang-orang di sini memberikan jawaban yang lebih baik imo =]

Falmarri
sumber
Saya kira ini secara teknis sesuai topik, tetapi mungkin lebih baik di tempat lain, karena tampaknya sebagian besar menjadi pertanyaan github
Michael Mrozek

Jawaban:

22

Anda dapat melakukan semuanya dari repositori yang ada (tidak perlu mengkloning garpu ke repositori baru (lokal), membuat cabang, menyalin komit / perubahan, dll.).

  1. Siapkan komitmen Anda untuk dipublikasikan.

    Perbaiki setiap komit lokal yang ada (mis. Dengan git commit --amenddan / atau git rebase --interactive).

    Komit setiap perubahan tanpa komitmen yang ingin Anda publikasikan (saya tidak yakin jika Anda bermaksud menyatakan bahwa Anda memiliki beberapa komitmen pada master lokal Anda dan beberapa perubahan tanpa komitmen, atau hanya beberapa perubahan tanpa komitmen, secara kebetulan, perubahan tanpa komitmen tidak "berdasarkan cabang ", mereka benar-benar di pohon kerja Anda).

    Ganti nama cabang master Anda untuk memberikannya nama yang Anda inginkan untuk "cabang baru" Anda. Ini tidak sepenuhnya diperlukan (Anda dapat mendorong dari cabang mana saja ke cabang lain), tetapi mungkin akan mengurangi kebingungan dalam jangka panjang jika cabang lokal Anda dan cabang di garpu GitHub Anda memiliki nama yang sama.

    git branch -m master my-feature
    
  2. Garpu repositori GitHub hulu
    (mis.) github.com:UpstreamOwner/repostory_name.gitSebagai
    (mis) github.com:YourUser/repository_name.git.

    Ini dilakukan di situs web GitHub (atau "klien" yang menggunakan API GitHub), tidak ada perintah Git lokal yang terlibat.

  3. Di repositori lokal Anda (yang semula dikloning dari repositori GitHub hulu dan memiliki perubahan pada masternya ), tambahkan repositori garpu Anda sebagai remote:

    git remote add -f github github.com:YourUser/repository_name.git
    
  4. Dorong cabang Anda ke gudang garpu di GitHub.

    git push github my-feature
    
  5. Secara opsional, ganti nama remote sehingga garpu Anda dikenal sebagai "asal" dan hulu sebagai "hulu".

    git remote rename origin upstream
    git remote rename github origin
    

    Salah satu alasan untuk mengubah nama remote adalah karena Anda ingin dapat menggunakan git pushtanpa menentukan repositori (defaultnya adalah “origin”).

Chris Johnsen
sumber
Bekerja dengan sempurna, tetapi ketika Anda membuat github remote, saya pikir Anda melewatkan "https: //" di URL Github
jesjimher
1
@jesjimher: "URL" dalam posting ini menggunakan "scp-like syntax" yang menggunakan SSH, bukan HTTP (S). Anda juga harus mengubah titik dua menjadi garis miring untuk menggunakannya sebagai URL HTTP (S) (dengan asumsi server mendukung keduanya tanpa perubahan namespace tambahan, yang dilakukan GitHub).
Chris Johnsen
Ups, Anda benar, Chris, saya salah ketik usus besar sebagai tebasan, dan dengan demikian itu tidak berhasil bagi saya kecuali saya menambahkan "https". Maaf untuk kebisingannya ...
jesjimher
Pada Langkah 4, menggunakan -uopsi dapat membuat cabang lokal Anda my-feature melacak cabang jarak jauh yang sama origin/my-feature. Perintahnya adalah:git push -u github my-feature
YaOzI
Itu keren. Satu-satunya hal yang harus saya ubah adalah alamat github!
Tico
0

Ada alat: hub

hubadalah alat baris perintah yang membungkus gituntuk memperluasnya dengan fitur dan perintah tambahan yang membuat bekerja dengan GitHub lebih mudah

Sekarang kamu bisa:

# cd to a cloned repo with uncommited changes
git checkout -b feature
git commit -am 'done with feature'
git fork
git push YOUR_USER feature
# git pull-request
Evgeny Vereshchagin
sumber