Come usare Git Force Pull

Come usare Git Force Pull
I file Git e le cartelle di qualsiasi progetto GIT possono essere condivisi da più utenti GIT che lavorano in un team. Quando più utenti provano a lavorare sullo stesso file o cartella, si verifica un conflitto. Supponiamo, quando i due utenti stanno lavorando sullo stesso file di un repository e se un utente modifica il file dopo la modifica effettuata da un altro utente, la modifica effettuata dal primo utente andrà persa dall'ultimo aggiornamento. Questo problema può essere risolto manualmente. L'utente deve girare la forza per sovrascrivere le modifiche nel repository locale senza influire sulle modifiche apportate nel repository locale che non vengono spinte. 'git pull' Il comando non è in grado di risolvere questo problema. Il modo di usare Git Force Pull by 'git fetch' E 'git reset' I comandi hanno mostrato in questo tutorial.

Prerequisiti:

Installa il desktop GitHub

Il desktop GitHub aiuta l'utente Git a eseguire graficamente le attività relative al GIT. Puoi facilmente scaricare l'ultimo programma di installazione di questa applicazione per Ubuntu da GitHub.com. È necessario installare e configurare questa applicazione dopo il download per utilizzarla. Puoi anche controllare il tutorial per l'installazione di Github Desktop su Ubuntu per conoscere correttamente il processo di installazione.

Crea un account GitHub

Dovrai creare un account GitHub per controllare i comandi utilizzati in questo tutorial.

Crea un repository locale e remoto

È necessario creare un repository locale e pubblicare il repository nel server remoto per testare i comandi utilizzati in questo tutorial.

Sovrascrivi i cambiamenti locali per aver forzato Git Pull:

IL 'git fetch -all' Comando download tutti i contenuti del repository remoto nel repository locale ma non unisce il contenuto con il repository locale. Dopo aver eseguito il comando Fetch, se il 'git reset' Il comando viene eseguito con il -difficile Opzione, quindi tutti i file e le cartelle corrispondenti del repository locale saranno sovrascritti dal contenuto del repository remoto. Tutti i cambiamenti locali non impegnati e impegnati che non vengono spinti verranno eliminati per il -Opzione difficile. Questo problema è stato descritto in questa parte del tutorial utilizzando un repository locale chiamato Python pubblicato in precedenza nel server remoto.

Apri il di base.Py File dal repository remoto per verificare il contenuto del file. La seguente immagine mostra che il file contiene quattro righe di script per aggiungere due numeri.

Force git tip per cambiamenti non impegnati:

Ora, apri il base.File PY del repository locale in qualsiasi editor di testo e modificare il file con il seguente contenuto. Salva il file e esci dall'editor.

Stampa ("Aggiunta di tre numeri")
a = 10
B = 20
c = 30
Stampa (A+B+C)

Esegui i seguenti comandi per aggiungere il modificato di base.Py File nel repository locale e controlla lo stato del repository.

$ git aggiungi base.Py
$ git status

Verrà visualizzato il seguente output dopo aver eseguito il comando. L'output mostra che l'attività non è ancora impegnata.

Eseguire i seguenti comandi per verificare il contenuto del di base.Py file prima di estrarre il contenuto del repository remoto e controllare il contenuto del di base.Py dopo aver tirato con forza.

$ Cat Basic.Py
$ git fetch --ally
$ git reset -Hard Origin/Main
$ Cat Basic.Py

Il seguente output mostra che il contenuto del di base.Py Il file è stato sovrascritto dal contenuto del di base.Py file del server remoto e il contenuto modificato è stato perso.

Force git tip per cambiamenti commessi:

Ancora una volta, apri il di base.Py File del repository locale in qualsiasi editor di testo e modificare il file con il seguente contenuto. Salva il file e esci dall'editor.

Stampa ("Sottraendo due numeri")
a = 50
B = 20
stampa (a - b)

Esegui i seguenti comandi per aggiungere il modificato di base.Py File nel repository locale, impegna l'attività e controlla lo stato del repository.

$ git aggiungi base.Py
$ git commit -m "di base.Py ha aggiornato "
$ git status

Il seguente output mostra che il modificato di base.Py Il file viene aggiunto e impegnato con un messaggio di commit. L'attuale albero di lavoro è pulito ora.

Eseguire nuovamente i comandi precedenti per verificare come il 'git reset' Il comando funziona per l'attività impegnata.

$ Cat Basic.Py
$ git fetch --ally
$ git reset -Hard Origin/Main
$ Cat Basic.Py

Il seguente output mostra che il contenuto del file remoto ha nuovamente sovrascritto il contenuto del file locale. Così il 'git reset' Il comando funziona allo stesso modo per le attività commesse e non impegnate.

Salva le modifiche locali prima di forzare Git Pull:

Il problema di sovrascrittura può essere risolto creando un nuovo ramo. Commettere tutte le modifiche al repository prima di eseguire i comandi pull. Ancora una volta, apri il di base.Py File del repository locale in qualsiasi editor di testo e modificare il file con il seguente contenuto. Salva il file e esci dall'editor.

Stampa ("Moltiplica due numeri")
a = 10
B = 20
Stampa (a * b)

Esegui i seguenti comandi per controllare l'elenco della filiale, passare a una nuova filiale e controllare il contenuto del di base.Py File dopo aver eseguito i comandi pull.

$ git filiale
$ git checkout -b new -ranch
$ git fetch -all
$ git reset -Hard Origin/Main
$ Cat Basic.Py

Il seguente output mostra che il contenuto del di base.Py Il file ha sovrascritto per la nuova filiale.

Ora, esegui i seguenti comandi per controllare il contenuto del di base.Py file dopo il passaggio al file principale ramo.

$ git checkout main
$ Cat Basic.Py

Il seguente output mostra che il contenuto del di base.Py è rimasto invariato.

Conclusione:

Il problema di tirare con forza il repository git e come risolvere questo problema è stato spiegato in questo tutorial utilizzando un repository demo locale e remoto. Ma questa soluzione non funzionerà per le modifiche non impegnate del repository locale. Quindi, devi commettere tutte le modifiche o eseguire il 'Git Stash' comando prima di tirare con forza il repository git.