Thursday 12 October 2017

Git Merge Conflitto Binarie Options


È possibile risolvere i conflitti unire utilizzando la riga di comando e un editor di testo. Unisci conflitti possono verificarsi se vengono apportate modifiche in competizione per la stessa linea di un file o quando un file viene cancellato che un'altra persona sta tentando di modificare. Per informazioni su come risolvere queste situazioni, vedi Competere cambiare linea unire i conflitti e file rimosso unire i conflitti. Competere cambiare linea di unire i conflitti per risolvere un conflitto di unione causata da concorrenti cambi di line, è necessario scegliere che cambia di incorporare dalle diverse filiali in un nuovo impegno. Ad esempio, se si e un'altra persona sia modificato il file styleguide. md sulle stesse linee in diversi rami della stessa repository Git, youll ottenere un errore di fusione conflitto quando si tenta di unire questi rami. È necessario risolvere il conflitto di unione con un nuovo commit prima di poter unire questi rami. Apri Terminale Terminal Git Bash. Navigare nel repository Git locale che ha il conflitto di unione. Genera un elenco dei file colpite dal conflitto di unione. In questo esempio, il file styleguide. md ha un conflitto di unione. Aprite il vostro editor di testo preferito, come ad esempio Atom. e selezionare il file che ha fondersi conflitti. Per vedere l'inizio del conflitto di unione nel file, cercare il file per la ltltltltltltlt marcatore conflitto. Quando si apre il file con un editor di testo, vedere youll i cambiamenti dal ramo testa o di base dopo la testa linea di ltltltltltltlt. Successivamente, youll vedere. che divide le modifiche dei cambiamenti nel ramo, seguiti da gtgtgtgtgtgtgt FILIALE-NAME. In questo esempio, una persona ha scritto un problema aperto nella base o il ramo HEAD e un'altra persona ha scritto per chiarire eventuali dubbi in IRC nel ramo confrontare o ramo-a. Decidere se si desidera mantenere solo i tuoi Branchs modifiche, tenere solo gli altri Branchs modifiche, o fare un nuovo cambiamento, che può incorporare le modifiche da entrambi i rami. Eliminare il ltltltltltltlt marcatori di conflitto. . gtgtgtgtgtgtgt e apportare le modifiche desiderate nell'unione finale. In questo esempio, entrambe le modifiche sono incorporati l'unione finale: Aggiungi o stadio le modifiche. Commit le modifiche con un commento. A questo punto è possibile unire i rami sulla linea di comando o spingere le modifiche al tuo repository remoto su GitHub e unire le modifiche in una richiesta di pull. File Rimosso unire i conflitti Per risolvere un conflitto di unione causato da modifiche a un file, in cui una persona cancella un file in un ramo e un'altra persona modifica lo stesso file in competizione, è necessario scegliere se cancellare o mantenere il file rimossi in un nuovo impegno. Ad esempio, se si è modificato un file, ad esempio README. md. e un'altra persona rimosso lo stesso file in un altro ramo della stessa repository Git, youll ottenere un errore di fusione conflitto quando si tenta di unire questi rami. È necessario risolvere il conflitto di unione con un nuovo commit prima di poter unire questi rami. Apri Terminale Terminal Git Bash. Navigare nel repository Git locale che ha il conflitto di unione. Genera un elenco dei file colpite dal conflitto di unione. In questo esempio, il file README. md ha un conflitto di unione. Aprite il vostro editor di testo preferito, come ad esempio Atom. e selezionare il file che ha fondersi conflitti. Decidere se si desidera conservare il file eliminato. Si consiglia di visualizzare le ultime modifiche apportate al file rimosso con un editor di testo. Per aggiungere il file rimosso di nuovo al vostro repository: Per rimuovere il file dal repository: commit le modifiche con un commento. A questo punto è possibile unire i rami sulla linea di comando o spingere le modifiche al tuo repository remoto su GitHub e unire le modifiche in una richiesta di pull. Ulteriori readingIve stato con Git su Windows (msysgit) per tenere traccia delle modifiche per alcuni lavori di progettazione Ive che fa. Oggi Ive sta lavorando su un altro PC (con pronti contro termine a distanza Brian) e Im ora cercando di fondere le modifiche fatto oggi di nuovo nella mia normale versione locale sul mio portatile. Sul mio computer portatile, Ive ha usato git pull maestro Brian per tirare i cambiamenti nella mia versione locale. Tutto è andato bene a parte il documento InDesign principale - questo dimostra come un conflitto. La versione su PC (Brian) è l'ultimo quello che voglio continuare ma non so quali comandi racconta la repo di utilizzare questo. Ho provato a copiare il file direttamente attraverso sul mio computer portatile, ma questo sembra rompere l'intero processo di unione. Qualcuno mi può punto nella giusta direzione Zitrax Forse diff il file dopo aver eseguito --ours git checkout. La pagina man suggerisce (secondo me) che cassa --ours - loro rimuoverà il cambiamento dal quotboth modificato, hanno bisogno elenco mergequot e inserirlo all'indice, e penso that39s non è corretto. Credo che sarà necessario eseguire git aggiungere dopo il checkout. ndash Tim Keating 13 maggio 13 alle 21:06 Si può anche superato questo problema con la quale fa sì che git per creare copie locali del binario in conflitto e generare il vostro editor di default su di loro: Ovviamente non puoi utilmente modificare i file binari in un editor di testo. Invece di copiare il nuovo file. REMOTE sopra senza chiudere l'editor. Poi, quando si fa chiudere l'editor di git vedrà che il lavoro di copia decorato è stato modificato e il vostro conflitto di unione viene risolto nel solito modo. Se i file sono di grandi dimensioni o se si don39t vuole rischiare l'apertura di binario in un editor di testo a tutti, si può colpire ctrlc al prompt mergetool (ritorno Hit quot per iniziare risoluzione strumento di unione quot) e git lascerà i file extra sul posto. Quindi è possibile modificare o unirli in uno strumento esterno (utile per formati di documenti binari come LibreOfficeOpenOfficeMSWord) e salvare il risultato di nuovo al nome del file originale. Per informare git che il conflitto è risolto, git aggiungere il nome del file originale, e quindi è possibile terminare la fusione commesso. ndash Felix 24 agosto 15 alle 21:54 Per risolvere mantenendo la versione nella vostra filiale corrente (ignora la versione dal ramo si uniscono a), è sufficiente aggiungere e rimettere il file: Per risolvere sovrascrivendo la versione nella vostra filiale corrente con la versione dal ramo si uniscono in, è necessario recuperare quella versione nella directory di lavoro prima, e poi si addcommit: Ive venire attraverso due strategie per la gestione dei file binari DiffMerge con Git su Windows. Tortoise git consente di configurare gli strumenti DiffMerge per i diversi tipi di file in base alle loro estensioni di file. Vedi 2.35.4.3. DiffMerge Impostazioni avanzate tortoisegit. orgdocstortoisegittgit-scavato-settings. html. Questa strategia, naturalmente relys su adeguati strumenti DiffMerge essere disponibile. Utilizzando git attributi è possibile specificare un toolcommand per convertire il file binario in testo e poi lasciate che il vostro strumento predefinito DiffMerge fare il suo dovere. Vedere git-scmbookitv2Customizing-Git-Git-attributi. L'articolo fornisce anche un esempio di utilizzo dei metadati per diff immagini. Ho avuto entrambe le strategie per lavorare con i file binari di modelli di software, ma siamo andati con tartaruga git come la configurazione è stato facile. risposto 27 novembre 14 al 15:46 Se il binario è qualcosa di più di una DLL o qualcosa che può essere modificato direttamente come un'immagine o un file blend (e non avete bisogno di trashselect un file o l'altro) una vera e propria fusione sarebbe alcuni, come: suggerisco la ricerca di uno strumento diff orientato a ciò che sono che file binario, per esempio ci sono alcuni tra quelli gratuiti per i file di immagine, per esempio e confrontarli. Se non c'è strumento diff là fuori per confrontare i file, quindi se avete il generatore originale del file bin (vale a dire, esiste un editor per esso. Come frullatore 3D, è possibile controllare manualmente i file, vedere anche il tronchi, e chiedere l'altra persona che cosa si dovrebbe includere) e fare un output dei file con git-scmbookesv2Git-Tools-Advanced-Mergingmanualremerge git spettacolo: 1: hello. blend gt hellomon. blend git spettacolo: 2: gt hello. blend hello. ours. blend git spettacolo: 3: hello. blend gt hello. theirs. blend risposto 13 15 agosto a 21:03 tua risposta 2017 Stack Exchange, IncMERGE strategie (comandi git pull di unione e Git) meccanismo di fusione permette l'unione di back-end strategie per essere scelti con l'opzione - s. Alcune strategie possono anche prendere le proprie opzioni, che possono essere passati, dando argomenti - Xltoptiongt a git fusione eo git pull. Questo può risolvere solo due teste (cioè il ramo corrente e un altro ramo si tirato da) utilizzando un algoritmo di fusione a 3 vie. Si tenta di rilevare accuratamente le ambiguità di unione incrociati ed è considerato generalmente sicuro e veloce. Questo può risolvere solo due teste utilizzando un algoritmo di unione 3 vie. Quando vi è più di un antenato comune che può essere usato per 3-way merge, crea un albero unito dei comuni antenati e utilizza come l'albero di riferimento per il 3-way unione. Questo è stato segnalato per causare meno conflitti di unione senza causare mismerges di test effettuati su fusione effettiva commit tratto da Linux 2.6 kernel di storia dello sviluppo. Inoltre questo grado di rilevare e gestire le unioni che coinvolgono rinomina. Questa è la strategia di unione di default quando si tira o fondendo un ramo. La strategia ricorsiva può assumere le seguenti opzioni: Questa opzione forza conflittuali grossi pezzi di essere auto-risolto in modo pulito, favorendo la nostra versione. Modifiche rispetto l'altro albero che non siano in contrasto con la nostra parte si riflettono al risultato della fusione. Per un file binario, l'intero contenuto sono presi da parte nostra. Questo non deve essere confuso con la strategia di fusione la nostra, che non ha nemmeno guardare a ciò che l'altro albero a tutti. Si scarta tutto ciò che l'altro albero ha, dichiarando la nostra storia contiene tutto quello che è successo in esso. Questo è l'opposto della nostra. Con questa opzione, si fondono-ricorsiva spende un po 'di tempo in più per evitare mismerges che a volte si verificano a causa di linee di corrispondenza di poco conto (ad esempio bretelle da funzioni distinte). Utilizzare questo quando i rami da unire sono divergenti selvaggiamente. Vedi anche git-DIFF1 --patience. Racconta merge-ricorsiva di utilizzare un algoritmo diff diverso, che può contribuire ad evitare mismerges che si verificano a causa di linee di corrispondenza poco importanti (come bretelle da funzioni distinte). Vedi anche git-DIFF1 --diff-algoritmo. ignore-space-change ignorano-all-space ignorare-spazio-at-EOL linee tratta con il tipo indicato di cambiamento spazi immodificato per il bene di una fusione a tre vie. modifiche degli spazi bianchi mescolati con altre modifiche a una linea non vengono ignorati. Vedi anche git-DIFF1 - b. - w. e --ignore-spazio-at-EOL. Se la loro versione introduce solo modifiche degli spazi bianchi ad una linea, la nostra versione è utilizzata Se la nostra versione introduce modifiche degli spazi bianchi, ma la loro versione include una modifica sostanziale, la loro versione è utilizzata In caso contrario, i proventi unione nel solito modo. Questo viene eseguito un check-out virtuale e il check-in di tutte le tre fasi di un file quando si risolve una fusione a tre vie. Questa opzione è pensato per essere utilizzato durante l'unione di rami con diversi filtri puliti o regole di normalizzazione di fine linea. Vedere Unione di rami con differenti attributi checkincheckout in gitattributes5 per i dettagli. Disabilita l'opzione rinormalizzare. Questo sovrascrive la variabile di configurazione merge. renormalize. Disattivare il rilevamento Rinomina. Vedi anche git-DIFF1 --no-rinomina. Attivare il rilevamento di rinomina, impostando opzionalmente la soglia di somiglianza. Questa è l'impostazione predefinita. Vedi anche git-DIFF1 --find-rinomina. sinonimo deprecato per find-renamesltngt. Questa opzione è una forma più avanzata di strategia di sottostruttura, dove la strategia fa una congettura su come due alberi devono essere spostati in modo che corrisponda con l'altro durante l'unione. Invece, il percorso specificato è preceduto (o spogliato dall'inizio) per rendere la forma di due alberi a partita. Questo risolve casi con più di due teste, ma si rifiuta di eseguire una stampa complessa che necessita soluzione manuale. Esso è principalmente destinato ad essere utilizzato per la legatura teste argomento filiali insieme. Questa è la strategia di unione di default quando si tira o la fusione più di un ramo. Questo risolve un qualsiasi numero di teste, ma l'albero risultante della fusione è sempre quella della testa ramo corrente, ignorando in modo efficace tutte le modifiche da tutti gli altri rami. E 'pensato per essere utilizzato per sostituire vecchia storia dello sviluppo di rami laterali. Si noti che questo è diverso dall'opzione - Xours alla strategia unione ricorsiva. Questa è una strategia ricorsiva modificata. Quando la fusione alberi A e B, se B corrisponde a una sottostruttura di A, B viene regolata prima corrispondere alla struttura ad albero di A, invece di leggere gli alberi allo stesso livello. La regolazione avviene anche per l'albero antenato comune. Con le strategie che utilizzano 3-way merge (incluso quello predefinito, ricorsiva), se viene apportata una modifica in entrambi i rami, ma in seguito ritornò su uno dei rami, che il cambiamento saranno presenti nel risultato unito alcune persone trovano questo comportamento confusione . Essa si verifica perché solo le teste e la base di fusione sono considerati quando si esegue una stampa unione, non l'individuo si impegna. L'algoritmo merge ritiene pertanto il cambiamento ritornato come nessun cambiamento a tutti, e sostituisce la versione modificata, invece. Questo sito source aperta è ospitato su GitHub. Patches, suggerimenti e commenti sono benvenuti.

No comments:

Post a Comment