Bagaimana cara mendapatkan perubahan "mereka" di tengah git rebit yang bertentangan?

349

Saya memiliki cabang yang saling bertentangan, branch2 bercabang dari branch1.

Katakanlah ketika rebasing branch2pada saat branch1, sementara menyelesaikan konflik, saya memutuskan untuk mengambil beberapa (tidak semua) dari "mereka" (yaitu branch1) file apa adanya. Bagaimana aku melakukan itu?

Saya mencoba:

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
sumber
41
Catatan: jika Anda rebasing branch2 ke branch1, replaying terjadi relatif terhadap branch1, jadi "milik mereka" sebenarnya branch2 dan "milik kita" adalah branch1. git.661346.n2.nabble.com/…
Mr
2
Lihat juga github.com/git/git/commit/…
VonC
1
Ini hanya menghabiskan waktu sekitar 20 jam kerja tekun. Jujur saya pikir "milik kita" akan selalu menjadi copy pekerjaan.
Theodore R. Smith

Jawaban:

496

Anda ingin menggunakan:

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

Jika Anda rebase cabang feature_xterhadap master(yaitu berjalan git rebase mastersaat di cabang feature_x), selama rebasing oursmengacu pada masterdan theirske feature_x.

Seperti yang ditunjukkan dalam dokumen git-rebase :

Perhatikan bahwa gabungan rebase berfungsi dengan memutar ulang setiap komit dari cabang kerja di atas cabang. Karenanya, ketika konflik gabungan terjadi, pihak yang dilaporkan sebagai milik kami adalah seri yang sejauh ini telah dirubah, dimulai dengan <upstream>, dan milik mereka adalah cabang kerja. Dengan kata lain, sisi-sisinya ditukar.

Untuk detail lebih lanjut baca utas ini .

iGEL
sumber
0

Jika Anda ingin menarik file tertentu dari cabang lain lakukan saja

git checkout branch1 -- filenamefoo.txt

Ini akan menarik versi file dari satu cabang ke pohon saat ini

Adrian Cornish
sumber
35
Ini mungkin akan menjadi ide yang buruk di tengah-tengah rebase karena akan menarik file dari kepala cabang itu tidak pada titik kepala terpisah Anda akan berada di dalam negara rebase yang bertentangan
Clintm