GitHub: trasforma il fork in un "progetto personale"


118

Ho trovato un bel progetto GitHub che ho ampliato molto. Credo che i miei cambiamenti siano buoni, perché stanno funzionando. Ma sembra che l'autore originale non abbia il tempo di rivedere queste modifiche e includerle. In effetti, è anche possibile che le funzionalità di cui ho bisogno e implementate non siano nella visione dell'autore originale e puntiamo semplicemente a obiettivi diversi. Non lo so perché non ho mai ricevuto risposte da lui.

Detto questo, ho visto che i miei contributi non vengono conteggiati nella mia mappa dei commit. Questo è il caso fino a quando il repository originale non accetta i miei contributi. Inoltre il mio lavoro è riconosciuto solo come lavoro e non attira altre persone con la mia stessa visione. Questo è il problema più grande per me, perché vedo molte persone che chiedono queste funzionalità.

Sto ancora offrendo i miei contributi al progetto originale, ma vedo che è improbabile che vengano mai accettati. Adesso vorrei fare della mia forchetta un "vero progetto". Anche se ho intenzione di sincronizzarmi con il progetto originale in alcuni momenti, voglio rinominarlo e motivare anche le persone a contribuire al mio progetto. Inoltre, mi piacerebbe se GitHub mostrasse che questo progetto è attivamente mantenuto (parlando della mappa di commit). E infine, mi piacerebbe farne una versione adeguata.

Come posso farlo e bene, rendere la mia forcella un progetto a tutti gli effetti?


Sono confuso, forse le cose sono cambiate dal 2014, ma il mio progetto TightBlog è elencato come un fork di Apache Roller nell'angolo in alto a sinistra: github.com/gmazza/tightblog , ma sto ottenendo pieno credito per tutti i miei problemi , PR, ecc., Anche se nessuno dei lavori è applicato al progetto principale di Apache Roller ma solo al mio fork: ( github.com/gmazza?tab=overview&period=monthly ). Non sono più sicuro di cosa si guadagni rendendo un fork un progetto autonomo.
Glen Mazza

Risposte:


75

Per scollegare il fork e trasformarlo in un repository autonomo su GitHub, contatta l' assistenza di GitHub .

https://help.github.com/articles/why-are-my-contributions-not-showing-up-on-my-profile/#commit-was-made-in-a-fork


9
Inoltre, in questo modo manterrai astronomi, osservatori e la rete di fork. A differenza della creazione di un nuovo repository da zero.
Johnco

1
Vale la pena notare che il supporto di GitHub mi ha dato la possibilità di riparare i fork dei figli o di tenerli collegati al mio repository.
gmarmstrong

41

Per fare ciò è necessario duplicare il repository . La versione breve è:

  1. Crea un nuovo repository su GitHub.
  2. Clona il repository biforcuto che desideri scollegare dal suo genitore.
  3. Esegui il push di tutti i rami in questo clone nel tuo nuovo repository.

Se vuoi che il tuo repository abbia ancora lo stesso nome, puoi probabilmente clonare il tuo repository, eliminarlo su GitHub, creare un nuovo progetto con lo stesso nome e spingere tutto.
Rory O'Kane

12
Sembra che le richieste pull GitHub possano essere solo attraverso le fork GitHub di un progetto. Quindi, se duplichi il tuo repository, non puoi effettuare richieste pull dal nuovo repository. E se elimini e sostituisci il tuo vecchio repository, tutte le tue richieste pull esistenti verranno probabilmente chiuse perché GitHub penserà che il codice è stato eliminato e non sarai in grado di effettuare nuove richieste pull.
Rory O'Kane

9
Downvoting in quanto ciò potrebbe indurre le persone a compiere azioni non necessarie. La risposta di Oleh dovrebbe invece essere accettata: la strada da percorrere è contattare l'assistenza di GitHub. Ci è voluta meno di un'ora per convertire la mia forchetta in un repo autonomo.
Georgii Ivankin

5

È semplicissimo:

  1. Clona il repository da qualche parte: git clone git@github.com:USERNAME/REPOSITORY.git(assicurati di averlo clonato due volte)
  2. Elimina il repository in GitHub (Impostazioni> Opzioni> Elimina questo repository)
  3. Crea un nuovo repository vuoto in GitHub
  4. git remote set-url origin git@github.com:USERNAME/NEW_REPOSITORY.git(se hai usato lo stesso nome per il repo, allora NEW_REPOSITORY== REPOSITORY👍🏻)
  5. git push
  6. 🙌🏻

(Io uso ssh, ma se usi https i tuoi URL GitHub saranno simili https://github.com/USERNAME/REPOSITORY.git)


1

Per prima cosa dovresti controllare se la licenza ti consente di farlo, in generale Open Source ti obbliga a farlo perché è tutta una questione di evoluzione del software senza catene. In tal caso, crea un nuovo repository. Non dimenticare di accreditare gli autori originali e avviare il tuo progetto.


3
È concesso in licenza al MIT e sì, ho intenzione di dare crediti come al solito. Infatti avrei preferito se l'autore originale avesse semplicemente accettato il mio codice (o mi avesse detto perché non lo fa)
Christian

1
Se la licenza non ti consente di creare un repository che non sia un fork di GitHub dell'originale, il progetto non dovrebbe essere un progetto GitHub pubblico in primo luogo, poiché i progetti pubblici dovrebbero essere rilasciati con una licenza open source . Non riesco a pensare a nessuna licenza open source che non consenta di fare copie di codice. Questo è il punto centrale dell'open source. (Naturalmente, potrebbero esserci requisiti di attribuzione, ma questi possono essere soddisfatti senza che un progetto sia un fork di GitHub "appropriato".)
cdhowie

L'autore certamente dovrebbe rendere il loro software libero del progetto, ma se non lo fanno (per esempio, se non v'è alcuna licenza), allora il progetto è non-free: stackoverflow.com/a/16934573/6791398
gmarmstrong
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.