Ini ialah arahan git-reset yang boleh dijalankan dalam penyedia pengehosan percuma OnWorks menggunakan salah satu daripada berbilang stesen kerja dalam talian percuma kami seperti Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS.
JADUAL:
NAMA
git-reset - Tetapkan semula HEAD semasa kepada keadaan yang ditentukan
SINOPSIS
pergi menetapkan semula [-q] [ ] [--] ...
pergi menetapkan semula (--tampalan | -p) [ ] [--] [ ...]
pergi menetapkan semula [--lembut | --campuran [-N] | --keras | --gabung | --keep] [-q] [ ]
DESCRIPTION
Dalam bentuk pertama dan kedua, salin entri daripada kepada indeks. Pada yang ketiga
borang, tetapkan kepala cawangan semasa (HEAD) kepada , secara pilihan mengubah suai indeks dan
pokok kerja untuk dipadankan. The / lalai kepada HEAD dalam semua bentuk.
pergi menetapkan semula [-q] [ ] [--] ...
Borang ini menetapkan semula entri indeks untuk semua ke negeri mereka di . (Ia
tidak menjejaskan pokok kerja atau cawangan semasa.)
Ini bermakna set semula git adalah bertentangan dengan git add .
Selepas menjalankan git reset untuk mengemas kini entri indeks, anda boleh menggunakan git-checkout(1)
untuk menyemak kandungan daripada indeks ke pokok kerja. Sebagai alternatif, menggunakan git-
checkout(1) dan menentukan komit, anda boleh menyalin kandungan laluan daripada a
komited kepada indeks dan kepada pokok kerja sekali gus.
pergi menetapkan semula (--tampalan | -p) [ ] [--] [ ...]
Secara interaktif pilih hunks dalam perbezaan antara indeks dan
(lalai kepada HEAD). Bongkok yang dipilih digunakan secara terbalik pada indeks.
Ini bermakna git reset -p adalah bertentangan dengan git add -p, iaitu anda boleh menggunakannya untuk
selektif menetapkan semula hunks. Lihat bahagian "Mod Interaktif" pada git-add(1) untuk belajar bagaimana
untuk mengendalikan mod --patch.
pergi menetapkan semula [ ] [ ]
Borang ini menetapkan semula kepala cawangan semasa ke dan mungkin mengemas kini indeks
(menetapkannya semula kepada pokok ) dan pokok kerja bergantung kepada . Jika
ditinggalkan, lalai kepada "--mixed". The mestilah salah satu daripada yang berikut:
- lembut
Tidak menyentuh fail indeks atau pokok kerja sama sekali (tetapi menetapkan semula kepala ke
, sama seperti semua mod lakukan). Ini meninggalkan semua fail anda yang diubah "Perubahan kepada
komited", sebagai pergi terkini akan meletakkannya.
--bercampur
Menetapkan semula indeks tetapi bukan pepohon berfungsi (iaitu, fail yang diubah dipelihara
tetapi tidak ditandakan untuk komit) dan melaporkan perkara yang belum dikemas kini. Ini adalah
tindakan lalai.
Jika -N ditentukan, laluan yang dialih keluar ditandakan sebagai niat untuk menambah (lihat git-add(1)).
--keras
Menetapkan semula indeks dan pepohon berfungsi. Sebarang perubahan pada fail yang dijejaki dalam kerja
pokok sejak dibuang.
--bercantum
Menetapkan semula indeks dan mengemas kini fail dalam pepohon kerja yang berbeza
antara dan HEAD, tetapi menyimpan yang berbeza antara indeks
dan pokok kerja (iaitu yang mempunyai perubahan yang belum ditambah). Jika fail
itu berbeza antara dan indeks mempunyai perubahan tidak berperingkat, set semula adalah
digugurkan.
Dalam erti kata lain, --merge melakukan sesuatu seperti a pergi pokok baca -u -m , Tetapi
membawa ke hadapan entri indeks yang tidak digabungkan.
--simpan
Menetapkan semula entri indeks dan mengemas kini fail dalam pepohon kerja yang berbeza
antara dan KEPALA. Jika fail yang berbeza antara dan KEPALA
mempunyai perubahan setempat, tetapan semula dibatalkan.
Jika anda ingin membatalkan komit selain yang terkini pada cawangan, git-balik(1) adalah anda
kawan.
PILIHAN
-q, --senyap
Diam, hanya laporkan kesilapan.
CONTOH
Buat asal tambah
$ edit (1)
$ git tambah frotz.c filfre.c
$ mailx (2)
$ git set semula (3)
$ git pull git://info.example.com/ nitfol (4)
1. Anda sedang bergembira mengerjakan sesuatu dan mendapati perubahan dalam fail ini ada
pesanan yang baik. Anda tidak mahu melihatnya apabila anda menjalankan "git diff", kerana anda bercadang untuk melakukannya
bekerja pada fail lain dan perubahan dengan fail ini mengganggu.
2. Seseorang meminta anda untuk menarik, dan perubahan itu kelihatan layak untuk digabungkan.
3. Walau bagaimanapun, anda telah mengotorkan indeks (iaitu indeks anda tidak sepadan dengan HEAD
komited). Tetapi anda tahu tarikan yang anda akan buat tidak menjejaskan frotz.c atau
filfre.c, jadi anda mengembalikan perubahan indeks untuk kedua-dua fail ini. Perubahan anda dalam bekerja
pokok kekal di situ.
4. Kemudian anda boleh tarik dan cantumkan, meninggalkan perubahan frotz.c dan filfre.c masih dalam
pokok bekerja.
Buat asal komitmen dan buat semula
$ git commit...
$ git reset --soft HEAD^ (1)
$ edit (2)
$ git commit -a -c ORIG_HEAD (3)
1. Ini paling kerap dilakukan apabila anda teringat apa yang baru anda lakukan tidak lengkap,
atau anda salah mengeja mesej komit anda, atau kedua-duanya. Meninggalkan pokok berfungsi seperti dahulu
"set semula".
2. Buat pembetulan pada fail pokok yang berfungsi.
3. "reset" menyalin kepala lama ke .git/ORIG_HEAD; buat semula komit dengan memulakan dengannya
mesej log. Jika anda tidak perlu mengedit mesej lagi, anda boleh memberikan pilihan -C
sebaliknya.
Lihat juga pilihan --pindaan kepada git-commit(1).
Buat asal komitmen, menjadikannya cabang topik
$ git branch topic/wip (1)
$ git reset --hard HEAD~3 (2)
$ git checkout topik/wip (3)
1. Anda telah membuat beberapa komitmen, tetapi sedar mereka terlalu awal untuk berada dalam "tuan"
cawangan. Anda ingin terus menggilapnya dalam cabang topik, jadi buat "topik/wip"
cabang daripada HEAD semasa.
2. Putar semula cawangan induk untuk menyingkirkan ketiga-tiga komitmen tersebut.
3. Beralih ke cawangan "topic/wip" dan teruskan bekerja.
Buat asal komitmen secara kekal
$ git commit...
$ git reset --hard HEAD~3 (1)
1. Tiga komitmen terakhir (HEAD, HEAD^, dan HEAD~2) adalah buruk dan anda tidak mahu
pernah jumpa mereka lagi. buat tidak lakukan ini jika anda telah memberikan komitmen ini
orang lain. (Lihat bahagian "PULIH DARI BASE SEMULA HULU" dalam git-rebase(1) untuk
implikasi daripada berbuat demikian.)
Buat asal cantuman atau tarik
$ git tarik (1)
Autocantum nitfol
KONFLIK (kandungan): Gabungkan konflik dalam nitfol
Gabungan automatik gagal; betulkan konflik dan kemudian lakukan hasilnya.
$ git reset --hard (2)
$ git tarik . topik/cawangan (3)
Mengemas kini daripada 41223... hingga 13134...
Maju pantas
$ git reset --hard ORIG_HEAD (4)
1. Cuba kemas kini dari huluan mengakibatkan banyak konflik; anda tidak bersedia
untuk menghabiskan banyak masa bergabung sekarang, jadi anda memutuskan untuk melakukannya kemudian.
2. "pull" belum membuat merge commit, jadi "git reset --hard" yang merupakan sinonim untuk "git
reset --hard HEAD" membersihkan kekacauan daripada fail indeks dan pokok berfungsi.
3. Gabungkan cawangan topik ke dalam cawangan semasa, yang menghasilkan ke hadapan pantas.
4. Tetapi anda memutuskan bahawa cabang topik belum lagi sedia untuk kegunaan awam.
"tarik" atau "cantum" sentiasa meninggalkan hujung asal cawangan semasa dalam ORIG_HEAD,
jadi menetapkan semula dengan keras kepadanya membawa fail indeks anda dan pokok berfungsi kembali kepada itu
nyatakan, dan menetapkan semula hujung cawangan kepada komit itu.
Buat asal cantuman atau tarik ke dalam pokok kerja yang kotor
$ git tarik (1)
Autocantum nitfol
Gabungan dibuat secara rekursif.
nitfol | 20 +++++----
...
$ git reset --merge ORIG_HEAD (2)
1. Walaupun anda mungkin mempunyai pengubahsuaian tempatan dalam pokok kerja anda, anda boleh mengatakan dengan selamat
"git pull" apabila anda tahu bahawa perubahan dalam cawangan lain tidak bertindih dengan
Mereka.
2. Selepas memeriksa hasil gabungan, anda mungkin mendapati bahawa perubahan pada yang lain
cawangan tidak memuaskan. Menjalankan "git reset --hard ORIG_HEAD" akan membolehkan anda kembali ke
di mana anda berada, tetapi ia akan membuang perubahan setempat anda, yang anda tidak mahu. "git
reset --merge" mengekalkan perubahan setempat anda.
Aliran kerja terganggu
Katakan anda diganggu oleh permintaan pembetulan segera semasa anda berada di tengah-tengah a
perubahan besar. Fail dalam pokok kerja anda belum dalam bentuk apa pun untuk dilakukan,
tetapi anda perlu pergi ke cawangan lain untuk pembetulan pepijat cepat.
$ git checkout feature ;# anda bekerja di cawangan "feature" dan
$ kerja kerja kerja ;# mendapat gangguan
$ git commit -a -m "WIP syot kilat" (1)
$ git checkout master
$ betulkan betulkan
$ git commit ;# commit dengan log sebenar
ciri $ git checkout
$ git reset --soft HEAD^ ;# kembali ke keadaan WIP (2)
$ git set semula (3)
1. Komit ini akan terpesona jadi mesej log buang adalah OK.
2. Ini menghapuskan WIP komit daripada sejarah komit, dan tetapkan pokok kerja anda kepada
negeri sebelum anda membuat petikan itu.
3. Pada ketika ini, fail indeks masih mempunyai semua perubahan WIP yang anda lakukan
gambar WIP. Ini mengemas kini indeks untuk menunjukkan fail WIP anda sebagai tidak komited.
Lihat juga git-stash(1).
Tetapkan semula satu fail dalam indeks
Katakan anda telah menambah fail pada indeks anda, tetapi kemudian memutuskan anda tidak mahu menambah
ia kepada komitmen anda. Anda boleh mengalih keluar fail daripada indeks sambil mengekalkan perubahan anda
dengan tetapan semula git.
$ git reset -- frotz.c (1)
$ git commit -m "Komit fail dalam indeks" (2)
$ git add frotz.c (3)
1. Ini mengalih keluar fail daripada indeks sambil menyimpannya dalam direktori kerja.
2. Ini melakukan semua perubahan lain dalam indeks.
3. Menambah fail pada indeks sekali lagi.
Kekalkan perubahan dalam pepohon berfungsi sambil membuang beberapa komitmen sebelumnya
Katakan anda sedang mengerjakan sesuatu dan anda melakukannya, dan kemudian anda terus bekerja
sedikit lagi, tetapi kini anda berfikir bahawa perkara yang anda ada dalam pokok kerja anda sepatutnya ada
cawangan lain yang tiada kaitan dengan apa yang anda lakukan sebelum ini. Awak boleh
mulakan cawangan baharu dan tetapkan semula sambil mengekalkan perubahan dalam pokok kerja anda.
$ git tag bermula
$ git checkout -b branch1
$ edit
$ git commit... (1)
$ edit
$ git checkout -b branch2 (2)
$ git reset --keep start (3)
1. Ini melakukan suntingan pertama anda dalam branch1.
2. Dalam dunia yang ideal, anda mungkin menyedari bahawa komitmen yang lebih awal tidak sepatutnya
kepada topik baharu apabila anda membuat dan bertukar kepada branch2 (iaitu "git checkout -b
branch2 bermula"), tetapi tiada siapa yang sempurna.
3. Tetapi anda boleh menggunakan "reset --keep" untuk mengalih keluar komit yang tidak diingini selepas anda beralih kepada
"cawangan2".
PERBINCANGAN
Jadual di bawah menunjukkan perkara yang berlaku apabila berjalan:
git reset --option target
untuk menetapkan semula HEAD kepada komit lain (sasaran) dengan pilihan tetapan semula yang berbeza bergantung pada
keadaan fail.
Dalam jadual ini, A, B, C dan D ialah beberapa keadaan fail yang berbeza. Sebagai contoh, yang pertama
baris jadual pertama bermakna jika fail berada dalam keadaan A dalam pokok kerja, dalam keadaan B
dalam indeks, dalam keadaan C dalam HEAD dan dalam keadaan D dalam sasaran, kemudian "git reset --soft
target" akan meninggalkan fail dalam pokok kerja dalam keadaan A dan dalam indeks dalam keadaan B. Ia
mengeset semula (iaitu menggerakkan) HEAD (iaitu hujung cawangan semasa, jika anda berada di satu) ke
"sasaran" (yang mempunyai fail dalam keadaan D).
indeks kerja HEAD sasaran indeks kerja HEAD
-------------------------------------------------- -
ABCD --ABD lembut
--campuran ADD
--keras DDD
--gabung (tidak dibenarkan)
--terus (tidak dibenarkan)
indeks kerja HEAD sasaran indeks kerja HEAD
-------------------------------------------------- -
ABCC --ABC lembut
--campuran ACC
--CCC keras
--gabung (tidak dibenarkan)
--kekalkan ACC
indeks kerja HEAD sasaran indeks kerja HEAD
-------------------------------------------------- -
BBCD --BBD lembut
--campuran BDD
--keras DDD
--gabungkan DDD
--terus (tidak dibenarkan)
indeks kerja HEAD sasaran indeks kerja HEAD
-------------------------------------------------- -
BBCC --BBC lembut
--campuran BCC
--CCC keras
--gabungkan CCC
--kekalkan BCC
indeks kerja HEAD sasaran indeks kerja HEAD
-------------------------------------------------- -
BCCD --BCD lembut
--campuran BDD
--keras DDD
--gabung (tidak dibenarkan)
--terus (tidak dibenarkan)
indeks kerja HEAD sasaran indeks kerja HEAD
-------------------------------------------------- -
BCCC --BCC lembut
--campuran BCC
--CCC keras
--gabungkan BCC
--kekalkan BCC
"reset --merge" dimaksudkan untuk digunakan apabila menetapkan semula daripada gabungan yang bercanggah. Apa-apa penggabungan
operasi menjamin bahawa fail pokok berfungsi yang terlibat dalam gabungan tidak
minta perubahan tempatan wrt indeks sebelum ia bermula, dan ia menulis hasilnya ke
pokok bekerja. Jadi jika kita melihat beberapa perbezaan antara indeks dan sasaran dan juga
antara indeks dan pokok kerja, maka ini bermakna kita tidak menetapkan semula daripada a
nyatakan bahawa operasi penggabungan ditinggalkan selepas gagal dengan konflik. Itulah sebabnya kami tidak membenarkan
--merge pilihan dalam kes ini.
"reset --keep" dimaksudkan untuk digunakan apabila mengalih keluar beberapa komit terakhir dalam semasa
cawangan sambil mengekalkan perubahan dalam pokok kerja. Sekiranya terdapat konflik antara
perubahan dalam komit yang ingin kita alih keluar dan perubahan dalam pepohon kerja yang kita mahu
simpan, tetapan semula tidak dibenarkan. Itulah sebabnya ia tidak dibenarkan jika terdapat kedua-dua perubahan
antara pokok kerja dan HEAD, dan antara HEAD dan sasaran. Untuk selamat, ia juga
tidak dibenarkan apabila terdapat entri yang tidak digabungkan.
Jadual berikut menunjukkan perkara yang berlaku apabila terdapat entri yang tidak digabungkan:
indeks kerja HEAD sasaran indeks kerja HEAD
-------------------------------------------------- -
XUAB --lembut (tidak dibenarkan)
--campuran XBB
--BBB keras
--gabungkan BBB
--terus (tidak dibenarkan)
indeks kerja HEAD sasaran indeks kerja HEAD
-------------------------------------------------- -
XUAA --lembut (tidak dibenarkan)
--campuran XAA
--AAA keras
--gabungkan AAA
--terus (tidak dibenarkan)
X bermaksud mana-mana keadaan dan U bermaksud indeks yang tidak digabungkan.
GIT
Sebahagian daripada pergi(1) suite
Gunakan git-reset dalam talian menggunakan perkhidmatan onworks.net