385 Stimmen

Wie kann ich in Git einen Zweig mit einem anderen Zweig "überschreiben", anstatt ihn "zusammenzuführen"?

Ich habe zwei Zweige, email y staging . staging ist die neueste und ich brauche die alten Änderungen nicht mehr in email Zweig, aber ich möchte sie nicht löschen.

Ich möchte also einfach den gesamten Inhalt von staging in email so dass sie beide auf dieselbe Übergabe verweisen. Ist das möglich?

1voto

Willa Punkte 709
git checkout email
git merge -m "Making email same as staging disregarding any conflicts from email in the process" -s recursive -X theirs staging

1voto

Noah Nuebling Punkte 184

Dadurch werden zwei Zweige zusammengeführt old y new und wählen Sie die new Version bei jedem Zusammenführungskonflikt:

git checkout old
git merge new
git checkout --theirs .
git add .
git commit

0voto

Jan Kyu Peblik Punkte 1310

Dieser verändert den ursprünglichen, neueren Zweig nicht und gibt Ihnen die Möglichkeit, vor der endgültigen Übergabe weitere Änderungen vorzunehmen.

git checkout new -b tmp
git merge -s ours old -m 'irrelevant'
git checkout old
git merge --squash tmp
git branch -D tmp
#do any other stuff you want
git add -A; git commit -m 'foo' #commit (or however you like)

0voto

zjk Punkte 1953

Ich habe @knittl's write-tree/commit-tree Ansatz.

Zweig-a: der gehaltene Zweig

Zweig-b: der verlassene Zweig

// goto branch-a branch
$ git checkout branch-a

$ git write-tree
6fa6989240d2fc6490f8215682a20c63dac5560a // echo tree id? I guess

$ git commit-tree  -p branch-a -p branch-b 6fa6989240d2fc6490f8215682a20c63dac5560a
<type some commit message end with Ctrl-d>
20bc36a2b0f2537ed11328d1aedd9c3cff2e87e9 // echo new commit id

$ git reset --hard 20bc36a2b0f2537ed11328d1aedd9c3cff2e87e9

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X