Hapus fork dependensi repositori GitHub

206

Bagaimana saya bisa membuat GitHub lupa atau terlepas bahwa repo saya pada awalnya merupakan fork proyek lain?

Saya melakukan proyek di GitHub. Sekarang saya bisa melihat "bercabang dari apa pun / apa pun". Repositori induk "apa pun / apa pun" tidak lagi dipertahankan. Saya telah diizinkan untuk terus menggunakan basis kode dari repositori asli untuk membuat repositori independen.

Apakah ada cara untuk melepaskan proyek saya dari repositori asli?

Mick
sumber

Jawaban:

175

Anda dapat menghubungi dukungan github dan meminta mereka untuk memindahkan repositori Anda ke "mode normal".

Pada halaman ini , paragraf "Komit dibuat dalam garpu", dijelaskan bahwa seseorang harus melalui dukungan untuk beralih. Oleh karena itu, kemungkinan tidak ada cara untuk melakukannya sendiri (kecuali Anda menghancurkan dan membuat ulang repo Anda yang dijelaskan sebelumnya ... jika Anda melakukannya hati-hati jika Anda memiliki tiket atau wiki yang melekat pada proyek Anda karena mereka akan dihapus!).

Thomas Moulard
sumber
31
Saya dapat mengonfirmasi bahwa menghubungi Dukungan berfungsi dengan sempurna, ditambah lagi mereka sering membalas dalam hitungan jam :-)
BenC
1
Halaman tertaut tidak lagi berisi informasi yang disebutkan.
Kara Brightwell
3
@MattBrennan Halaman berubah tetapi bagian terakhir masih mencakup: "Untuk melepaskan garpu dan mengubahnya menjadi repositori mandiri di GitHub.com atau GitHub Enterprise, masing-masing, hubungi dukungan GitHub atau administrator situs Anda."
Thomas Moulard
1
Sangat cepat .. mereka menjawab saya dalam 1 jam. Terima kasih
myDoggyWritesCode
2
Di Github Enterprise Anda dapat menemukannya sekarang di bawah admin-> Collaboration-> Network dan tergantung pada kasus penggunaan Anda, Anda harus menggunakan 'Make Root', 'Detach' atau 'Extract'.
Kutzi
45

Anda bisa menduplikasi repositori bercabang ke repositori baru (tanpa ketergantungan garpu) dari UI github, lalu menghapus yang bercabang asli:

  • Masuk ke github
  • Pilih tanda + di sudut kanan atas, dan Impor repositori .
  • Impor repositori bercabang Anda. Repositori baru tidak akan memiliki ketergantungan garpu.
  • Hapus repositori asli dan bercabang dalam pengaturan repositori.
Juuso Ohtonen
sumber
1
Ini adalah yang termudah dan berhasil untuk saya :). Sangat pintar.
moxi
1
Adakah orang lain yang mengalami masalah dengan fitur impor "menggantung"? Milik saya telah di "Mendeteksi sistem kontrol versi proyek Anda ..." selama sekitar 5 jam. Saya tidak yakin apakah saya sedang antri atau benar-benar hang. Repo itu kecil. Tergoda untuk meninggalkannya semalaman kalau-kalau aku antre.
Benjamin West
Saya akhirnya penasaran dan hanya mengklik "batal". Mengklik pembatalan memungkinkan untuk melewati deteksi VCS dan hanya mengimpor kode / commit / cabang dll. Ini adalah kasus ketika mengimpor Github -> Github. Impor mungkin tidak akan hang jika saya berasal dari VCS yang berbeda? Tidak yakin. Harap perhatikan juga untuk melakukan ini dengan repo kedua, saya harus membatalkan dua kali agar berfungsi. Jika CLI menyalin semua data yang sama yang mungkin merupakan metode yang lebih baik, tetapi harap ini membantu orang lain yang memilih rute ini.
Benjamin West
9
Untuk lebih jelasnya, pendekatan ini tidak akan mempertahankan masalah dan menarik permintaan.
golopot
Bekerja seperti pesona! Terima kasih Anda seorang penyelamat! :)
omnimind
44

Pastikan Anda memiliki semua cabang dan tag penting pada repo lokal Anda, hapus repositori github, buat ulang repositori melalui cara biasa (tanpa forking) dan dorong kembali repositori lokal git push --all. Perhatikan bahwa jika Anda memiliki cabang lokal yang tidak ingin Anda terbitkan, mungkin layak untuk membuat klon lokal bersih sementara untuk operasi.

Namun, ini juga akan menghilangkan wiki dan masalah. Karena wiki sebenarnya adalah repositori sendiri, wiki dapat ditangani dengan cara yang sama dengan mengkloningnya dan kemudian menciptakan kembali dan mendorong. Alamat repo ada di halaman Akses Git wiki ( [email protected]:user/repo.wiki.git).

Ini meninggalkan masalah. Mereka dapat diekspor melalui API , tetapi sejauh yang saya tahu, Anda hanya dapat membuat masalah dan komentar dengan orang Anda, jadi mengimpornya dengan sempurna adalah hal yang mustahil.

Jadi, jika Anda perlu masalah untuk dilestarikan, Anda harus melalui dukungan github seperti yang disarankan Thomas Moulard.

Tapio
sumber
Bergantung pada berapa banyak masalah yang ada, dimungkinkan untuk mentransfernya satu per satu ke repositori baru sebelum menghapus dari yang lama dari web ( help.github.com/en/github/managing-your-work-on- github / ... ). Saya kira seorang individu yang gigih dapat mentransfer lebih dari 100 masalah per jam - bukan hal yang menyenangkan, tetapi bagi banyak repositori, hal yang bisa dilakukan.
Suma
22

Saya mendapatkan masalah yang sama, dan akhirnya menggunakan halaman bantuan github ini untuk menyelesaikannya. Saya tidak keberatan dengan wiki dan pelacak isu seperti untuk blog saya menggunakan tema yang dikembangkan oleh pengguna lain.

Untuk melepaskan repo bercabang dua dan menggunakannya sebagai milik Anda setelah beberapa kali melakukan tanpa kehilangan seluruh sejarah:

git clone --bare [email protected]:user/forked_repo.git

Buat repositori kosong baru new-repositorydi situs web github. Dan dorong versi cermin:

cd user.github.com.git/

git push --mirror [email protected]:user/new-repository.git

Satu dapat mengganti nama di github, forked_repositorydengan nama lain untuk menyimpannya sebagai cadangan dan memeriksa pembaruan jika diperlukan. Atau cukup hapus saja.

Mengganti nama new-repositorymenjadi nama asli melakukan pekerjaan. Sebagai efek samping, komit Anda sekarang muncul dalam riwayat Anda.

Aurelien
sumber
11

Ini hanya berlaku untuk GitHub Enterprise, bukan pada github.com

Masuk ke akun yang memiliki hak admin:

  1. Buka repositori yang harus Anda lepaskan: https://<ghe url>/<org>/<repo>
  2. Klik pada roket "Admin Situs" di sudut kanan atas
  3. Klik "Kolaborasi" pada bilah menu atas
  4. Klik pada "Jaringan" di panel kiri
  5. Klik "Make Root" di panel Struktur Jaringan
  6. Menerima

Ini diuji di GitHub Enterprise 2.9

Antonio O.
sumber
Tergantung pada kasus penggunaan Anda, 'Lepaskan' atau 'Ekstrak' mungkin lebih tepat. Saya menemukan 'Make Root' agak aneh karena pada dasarnya akan membalikkan arah root-> anak saat ini. (Github Enterprise 2.17)
Kutzi
10

Menggunakan info dari aurelien dan Clayton , saya dapat melakukan ini dengan yang berikut:

$ git clone --bare https://github.com/my/forked_repo.git
<delete forked_repo on GitHub>
<recreate repo on GitHub using same name>
$ cd forked_repo.git
$ git push --mirror

Berikut dokumentasi untukgit clone --bare :

Buat repositori telanjang Git. Artinya, alih-alih membuat <directory>dan menempatkan file administratif <directory>/.git, buat <directory>sendiri file tersebut $GIT_DIR. Ini jelas menyiratkan -n karena tidak ada tempat untuk memeriksa pohon yang berfungsi. Juga kepala cabang di remote disalin langsung ke kepala cabang lokal yang sesuai, tanpa memetakannya refs/remotes/origin/. Saat opsi ini digunakan, cabang pelacakan jarak jauh maupun variabel konfigurasi terkait tidak dibuat.

Berikut dokumentasi untukgit push --mirror :

Alih-alih penamaan masing-masing ref untuk push, menetapkan bahwa semua ref bawah refs/(yang termasuk namun tidak terbatas pada refs/heads/, refs/remotes/, dan refs/tags/) dicerminkan ke repositori jauh. Referensi lokal yang baru dibuat akan didorong ke ujung jarak jauh, referensi yang diperbarui secara lokal akan diperbarui secara paksa di ujung jarak jauh, dan referensi yang dihapus akan dihapus dari ujung jarak jauh. Ini adalah default jika opsi konfigurasi remote.<remote>.mirrordiatur.

Catatan: seperti gitjawaban berbasis lainnya , ini tidak akan menyalin masalah yang bukan bagian dari gitrepo seperti wiki dan masalah. Per Tapio:

  • Wiki adalah git repo yang terpisah dan dapat ditangani dengan cara yang sama per Tapio. Alamatnya adalah: [email protected]:user/repo.wiki.git.
  • Masalah dapat diekspor melalui API GitHub tetapi ada masalah membuat ulang karena hanya dapat dibuat oleh pengguna Anda, sehingga impor akan kehilangan informasi.
Grokify
sumber