Como obter as "suas" alterações no meio da rebase conflitante do Git?

349

Tenho ramificações conflitantes, ramificação2 ramificada de ramificação1.

Digamos que ao refazer branch2a atualização atual branch1, enquanto resolvo conflitos, decido usar alguns (não todos) dos branch1arquivos "seus" (ou seja ) como estão. Como faço isso?

Eu tentei:

git checkout branch1:foo/bar.java
fatal: reference is not a tree: TS-modules-tmp:foo/bar.java

git checkout refs/heads/branch1:foo/bar.java
fatal: reference is not a tree: refs/heads/TS-modules-tmp:foo/bar.java
Ondra Žižka
fonte
41
Nota: se você estiver refazendo o branch2 no branch1, a reprodução ocorrerá em relação ao branch1, portanto "deles" é na verdade branch2 e "our" é branch1. git.661346.n2.nabble.com/…
Sr. Fooz
2
Veja também github.com/git/git/commit/…
VonC
11
Isso me custou cerca de 20 horas de trabalho diligente. Sinceramente, pensei que "o nosso" seria sempre a cópia de trabalho.
Theodore R. Smith

Respostas:

496

Você quer usar:

git checkout --ours foo/bar.java
git add foo/bar.java

Se você refazer uma ramificação feature_xcontra master(ou seja, executando git rebase masterenquanto estiver na ramificação feature_x), durante a refazer oursa refração, refere-se a mastere theirspara feature_x.

Conforme apontado nos documentos do git-rebase :

Observe que uma mesclagem de rebase funciona repetindo cada confirmação da ramificação de trabalho na parte superior da ramificação. Por esse motivo, quando ocorre um conflito de mesclagem, o lado relatado como nosso é a série rebased até agora, começando com <upstream>, e o deles é o ramo de trabalho. Em outras palavras, os lados são trocados.

Para mais detalhes, leia este tópico .

iGEL
fonte
0

Se você deseja extrair um arquivo específico de outro ramo, basta

git checkout branch1 -- filenamefoo.txt

Isso puxará uma versão do arquivo de um ramo para a árvore atual

Adrian Cornish
fonte
35
Este seria provavelmente uma má idéia no meio de um rebase como ele iria puxar o arquivo da cabeça desse ramo não no ponto cabeça destacada você estaria em um estado rebase em conflito
Clintm