Come si aggiorna un fork repo GitHub nell'interfaccia web?


58

Ho un repository Github che ho creato da qualche altro progetto diversi mesi fa. Sono passati diversi mesi e il repository master originale è cambiato. Vorrei aggiornare il mio repository per riflettere tali modifiche. È possibile nell'interfaccia web di Github? O devo solo eliminare il repository e riproporlo?




Risposte:


43

Puoi provare a invertire il modo in cui avvengono le richieste pull.

  1. Vai al tuo bivio
  2. Invia una richiesta pull

    Per impostazione predefinita, questo sarà il fork sulla destra ( repository capo ) che richiede di eseguire il push dei suoi commit e passa al repository originale ( repository base ) a sinistra.

  3. Fare clic sul menu a discesa sia per il repo di base che per il repository principale e selezionare i rispettivi repository.

    Vuoi che il tuo sia elencato a sinistra (accettando le modifiche) mentre il repository originale è a destra (quello con le modifiche da spingere). Come illustrato in questa immagine:

    fork fatto su se stesso

  4. Invia la richiesta pull

    Se il fork non ha subito modifiche, dovresti essere in grado di accettare automaticamente l'unione.

Se il tuo codice in qualche modo è in conflitto o non è abbastanza pulito, allora questo non funzionerà per l'aggiornamento tramite l'interfaccia web di GitHub e dovrai afferrare il codice e risolvere eventuali conflitti sul tuo computer prima di tornare al tuo fork.


3
Funziona ancora, ma sì, non è l'ideale. È sicuramente solo un trucco. Non è il modo corretto di farlo.
Jake Wilson,

3
Confermata una cattiva idea. Questo inquina il repository in un modo in cui Github suggerisce di estrarre una richiesta di commit vuoto per il progetto originale. Vedi ad esempio github.com/dthommes/RoboSpring/pull/3 - Una volta che ho contribuito, poi mi sono sincronizzato e ora Github vuole che invii un commit "Syncing my fork" etichettato come "Unisci pull richiesta # 1 da dthommes / master ... "
usr-local-ΕΨΗΕΛΩΝ

1
Non penso più che funzioni. Anche se sembra un po 'strano, non esiste un modo semplice per farlo.
Toby Allen,

1
Ho appena provato, e non ha subito sembra al lavoro - quando si cambia una delle forcelle subito aperto una pagina "modifiche a confronto". Ma facendo clic sul link "confronta tra forche" è stato possibile modificare comunque l'altro fork. Forse potresti aggiungere qualcosa a questo effetto alla tua risposta.
Peter Mortensen,

4
GitHub dovrebbe aggiungere un pulsante "Sync Fork" in modo da non dover creare un milione di PR. Per ora sto usando la riga di comando per aggiornare le mie forcelle
Suici Doga

23

Sarà più facile.

  1. Vai al Forked Repo (il tuo) e fai semplicemente clic sul pulsante - "Nuova richiesta pull".
  2. Nella pagina che si apre, c'è un piccolo link per "cambiare base" nel messaggio sotto le selezioni a discesa. Clicca il link.
  3. Ora porterà automaticamente al repository originale. Fai clic sul pulsante Crea richiesta pull e scrivi un messaggio di commit.
  4. Ora porterà automaticamente al repository biforcuto, fai clic su Unisci richiesta pull e Conferma unione per terminare.

Dovresti chiarire quali sono questi pulsanti verdi e sarebbe un'ottima risposta ....
Rodrigo Graça,

Questa è sicuramente la migliore risposta al 4/2016.
dr01,

7
Il problema con questo metodo è che aggiunge un commit extra al tuo ramo, quindi non è realmente sincronizzato con il repository upstream.
Mottie,

@Mottie C'è un modo per noi di sapere se il nostro fork è dietro l'ultima versione a monte e vedere una differenza dei cambiamenti, senza effettivamente tirarli?
Sujay Phadke,

1
@SujayPhadke Nella pagina principale del repository biforcato sotto il pulsante di selezione ramo sarà visualizzato il messaggio "Questo ramo è xx commette dietro xxxx: master.". Per quanto riguarda la visualizzazione del diff, c'è un pulsante "confronta" nella stessa riga del messaggio; oppure puoi andare a questo link:https://github.com/{user}/{forkedRepoName}/compare/master...{originalRepo}:master
Mottie,

3

Come aggiornare un repository GitHub biforcato con modifiche dal repository remoto upstream


Istruzioni dalla Guida di GitHub:

Configurazione di una forcella remota

Sincronizzare una forcella


Istruzioni di installazione / funzionamento:

Apri Git Bash (Windows) o Linux / Mac Terminal

Se non è stato ancora clonato il repository, è necessario passare alla directory di lavoro della cartella di sviluppo e clonarla sulla workstation.

$ git clone https://github.com/YOUR_USERNAME/YOUR_FORK.git

Passare alla directory di lavoro del repository a forcella sulla workstation.

$ cd /user/development/my_forked_repo/

Elenca il repository remoto attualmente configurato per il tuo fork.

 $ git remote -v

origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)

Specificare un nuovo repository upstream remoto che verrà sincronizzato con il fork.

$ git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git

Verifica il nuovo repository upstream specificato per il tuo fork.

$ git remote -v

origin    https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin    https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
upstream  https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch)
upstream  https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (push)

Recupera i rami e i rispettivi commit dal repository a monte. Gli commit sul master verranno archiviati in una filiale locale, a monte / master.

$ git fetch upstream

remote: Counting objects: 75, done.
remote: Compressing objects: 100% (53/53), done.
remote: Total 62 (delta 27), reused 44 (delta 9)
Unpacking objects: 100% (62/62), done.
From https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY
 * [new branch]      master     -> upstream/master

Scopri la filiale principale locale del tuo fork.

$ git checkout master

Switched to branch 'master'

Unire le modifiche da upstream / master nel ramo master locale. Questo porta il ramo master del tuo fork in sincronia con il repository upstream, senza perdere le modifiche locali.

$ git merge upstream/master

Updating a422352..5fdff0f
Fast-forward
README                    |    9 -------
README.md                 |    7 ++++++
 2 files changed, 7 insertions(+), 9 deletions(-)
 delete mode 100644 README
 create mode 100644 README.md

Se la tua filiale locale non ha avuto alcun commit univoco, Git eseguirà invece un "avanzamento rapido":

$ git merge upstream/master

Updating 34e91da..16c56ad
Fast-forward
 README.md                 |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Ora dovrai spingere i commit sul tuo fork.

$ git push

Se non si è già autenticati, verrà richiesto il nome utente / la password github. Una volta autenticati, i nuovi commit dovrebbero essere inseriti nel fork e visibili su github.


5
Grazie per la risposta dettagliata, tuttavia la speranza era una soluzione che utilizza l'interfaccia web.
Toby Allen,
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.