Pertanyaan Cara mendapatkan hanya satu file dari cabang lain


Saya menggunakan git dan bekerja di cabang master. Cabang ini memiliki file bernama app.js.

Saya punya experiment cabang di mana saya membuat banyak perubahan dan banyak komit. Sekarang saya ingin membawa semua perubahan yang dilakukan hanya untuk app.js dari experiment untuk master cabang.

Bagaimana aku melakukan itu?

Sekali lagi saya tidak ingin penggabungan. Saya hanya ingin membawa semua perubahan app.js dari experiment cabang ke master cabang.


821
2018-03-02 15:15


asal


Jawaban:


git checkout master               # first get back to master
git checkout experiment -- app.js # then copy the version of app.js 
                                  # from branch "experiment"

Lihat juga git cara membatalkan perubahan satu file?

Sebagai Jakub Narębski sebutkan di komentar:

git show experiment:path/to/app.js > app.js

bekerja juga, kecuali itu, seperti yang dijelaskan dalam pertanyaan SO "Bagaimana cara mengambil file tunggal dari revisi tertentu di Git?", Anda perlu menggunakan path lengkap dari direktori root repo.
Oleh karena itu jalan / ke / app.js digunakan oleh Jakub dalam contohnya.

Sebagai Frosty sebutkan di komentar:

Anda hanya akan mendapatkan status app.js terbaru

Tapi untuk git checkout atau git show, Anda dapat mereferensikan setiap revisi yang Anda inginkan, seperti yang diilustrasikan dalam pertanyaan SO "git checkout revisi file di git gui":

$ git show $REVISION:$FILENAME
$ git checkout $REVISION -- $FILENAME

akan sama adalah $ FILENAME adalah a jalur penuh dari file berversi.

$REVISION bisa seperti yang ditunjukkan dalam git rev-parse:

experiment@{yesterday}:app.js # app.js as it was yesterday 
experiment^:app.js            # app.js on the first commit parent
experiment@{2}:app.js         # app.js two commits ago

dan seterusnya.


1071
2018-03-02 15:23



Semuanya jauh lebih sederhana, gunakan git checkout untuk itu.

Seharusnya you're on master cabang, untuk mendapatkan app.js from new-feature cabang lakukan:

git checkout new-feature path/to/app.js

// note that there is no leading slash in the path!

Ini akan membawakan Anda isi dari file yang diinginkan. Anda bisa, seperti biasa, gunakan bagian dari sha1 sebagai gantinya  fitur baru  nama cabang untuk mendapatkan file seperti itu dalam komit tertentu.


235
2018-04-05 08:48



Tambahan untuk jawaban VonC dan chhh.

git show experiment:path/to/relative/app.js > app.js
# If your current working directory is relative than just use
git show experiment:app.js > app.js

atau

git checkout experiment -- app.js

26
2017-12-08 02:22



Atau jika Anda ingin semua file dari cabang lain:

git checkout <brachname> -- .

4
2018-02-02 18:51



git checkout branch_name file_name

Contoh:

git checkout master App.java

4
2018-05-11 09:43