Git: ignora alcuni file durante l’unione (tieni alcuni file limitati a un ramo)

Ho due rami, A e B Il ramo A ha un examples directory con alcuni file tracciati da git e questi file non dovrebbero apparire sul ramo B Nel mio stream di lavoro, unisco spesso le modifiche apportate in A in B , il che è un problema ogni volta che si verificano modifiche agli examples . Per il momento lo sto facendo manualmente: cancellando i file dopo l’unione o risolvendo i conflitti quando c’era una modifica a un file che avevo già cancellato.

È ansible ignorare questi file durante un’unione? (Oppure è ansible mantenere alcuni file limitati a un ramo ( A ) o lontano da un ramo ( B )?)


Lasciatemi provare a spiegare perché sto facendo questo: A è uno scheletro di un blog (modello, script, ecc.), B è il mio blog ( A riempito con i miei messaggi, immagini, bozze, ecc.). A è pubblico e sto cercando di renderlo generico agli altri e di usarlo, ma per questo ho bisogno di alcuni post lì come una vetrina / test (la directory degli examples ). Ogni modifica in A e in seguito viene unita in B per apportare queste modifiche all’istanza del mio blog: in questo modo tutti i nuovi esempi vengono visualizzati in B e tutti gli esempi eliminati in B che sono stati modificati in A poiché l’ultima fusione genera un conflitto.

Ho trovato una buona risposta qui: Stackoverflow Q332528

Usa idee prese da qui: Pro-Git unisce strategie

Ecco una copia di questo:

Diciamo che vuoi escludere il file config.php

Sul ramo A:

  1. Crea un file chiamato “.gitattributes” nella stessa dir, con questa riga: config.php merge = ours. Questo dice a Git quale strategia usare quando si unisce il file. In questo caso mantiene sempre la tua versione, es. la versione sul ramo in cui ti stai fondendo.

  2. Aggiungi il file .gitattributes e commetti

Sul ramo B: ripetere i passaggi 1-2

Prova a unire ora. Il tuo file dovrebbe essere lasciato inalterato.


Modificare:
Dal git book riguardante merge=ours , “Un’opzione molto utile è dire a Git di non provare a unire file specifici quando hanno dei conflitti , ma piuttosto di usare la tua parte dell’unione su quella di qualcun altro.”

Quindi, questa risposta non si applica così come potrebbe alla domanda. La risposta di pjmorse sull’uso dei sottomoduli è buona.

Un’altra opzione potrebbe essere l’utilizzo di un’unione sotto l’albero , che potrebbe avere ulteriori vantaggi.

Potresti trovare utile il comando rerere di git. Con questo puoi registrare le risoluzioni per determinati conflitti di fusione e riutilizzarle in seguito.

Con i tuoi aggiornamenti: Sì, i sottomoduli sarebbero appropriati per questo uso se tutto A si adatta a una sottodirectory di B (o viceversa). Un esempio di sottomoduli che usano WordPress sarebbe se hai un repository git di WordPress; puoi aggiungere un sottomodulo per un tema che si trova nella directory /wp-content/themes/ .

La documentazione per i sottomoduli potrebbe aiutare.

Se i file dei due sono intercalati, potrebbe essere più difficile. La maggior parte dei casi in cui i sottomoduli possono essere utilizzati in questo modo, l’applicazione in questione è stata progettata per consentire loro.