Se non vi preoccupate circa la storia, allora si può fare commettere un separato sul ramo 2 contenente il file esattamente come sembra sulla punta del commit in Proj1:
git checkout Proj2
git checkout Proj1 -- index.html
git commit -am "Modify Index.html"
In sostanza, questo significa prendi il file ESATTAMENTE come appare nel ramo Proj1.
git checkout --
significa che dopo il trattino viene fornito un nome file (o percorso). Questo può essere utile, anche se vuoi cambiare alcuni file nel tuo repository e preservarne altri.
Quindi, se si desidera, è anche possibile riutilizzare il messaggio di commit dal commettere hai fatto in Proj1 come questo:
git checkout Proj2
git checkout Proj1 -- index.html
git commit -a -C Proj1
Git commit -C
significa riutilizzare il commit già avuto.
Dal git documentation "git checkout":
git cassa [-p|--patch] [<tree-ish>] [--] <pathspec>
Quando o --patch
sono date, git cassa non commuta rami. Lo aggiorna i percorsi con nome nell'albero di lavoro dal file di indice o da un named (il più delle volte un commit).
[...]
git checkout con o --patch
viene utilizzato per ripristinare i percorsi eliminati modificati o il loro contenuto originale dall'indice o sostituire percorsi con il contenuto da un nome (il più delle volte un commit -ish).
E dal git documentation "git commit"
git commit -C <commit>
--reuse-message=<commit>
prendere un oggetto commettere esistente, e riutilizzare il messaggio di log e la informazioni autore (tra cui il timestamp) quando si crea il commit.
fonte
2017-05-04 14:42:03
Mi piacerebbe ancora lavorare su Proj1. – machmet
Sincronizzazione. tra le filiali in GIT è git merge. Qualsiasi altro modo non è il modo giusto. – yorammi
Sono d'accordo con @yorammi, tuttavia puoi investigare [git worktrees] (https://git-scm.com/docs/git-worktree) e link simbolico/hard. Anche se puoi finire in un casino. Non posso aiutarti ulteriormente dato che andrò per unire e non ho investigato ancora molto sul worktree – ThanksForAllTheFish