Rumah  >  Artikel  >  alat pembangunan  >  3 langkah untuk menyelesaikannya! Simpan rekod komit Git yang bersih

3 langkah untuk menyelesaikannya! Simpan rekod komit Git yang bersih

WBOY
WBOYke hadapan
2022-02-22 18:01:301543semak imbas

Artikel ini memberi anda pengetahuan tentang menjaga kebersihan Git rekod komit, termasuk "git commit –amend", "git rebase -i" dan "rebase" Soalan, harap ia membantu semua orang.

3 langkah untuk menyelesaikannya! Simpan rekod komit Git yang bersih

Pembelajaran yang disyorkan: "Tutorial Git"

Semua orang telah mempelajari cara menulis kod dalam standard dan ringkas cara , tetapi jarang belajar cara menyeragamkan dan ringkas serahkan kod. Pada masa kini, semua orang pada asasnya menggunakan Git sebagai alat pengurusan kod sumber Git memberikan fleksibiliti yang hebat. masalah biasa ialah sejarah log git yang tidak kemas, yang benar-benar pembalut kaki wanita tua, berbau dan panjang saya secara peribadi tidak suka log jenis ini

3 langkah untuk menyelesaikannya! Simpan rekod komit Git yang bersihPunca masalah ini. sedang menghantar kod sesuka hati.

Kod telah diserahkan, adakah terdapat cara untuk menyimpannya? Tiga petua boleh menyelesaikan masalah dengan sempurna

Gunakan git commit –amend

Dokumen bantuan arahan ini diterangkan seperti ini:

Dalam erti kata lain , ia boleh membantu kami mengubah suai
--amend               amend previous commit
komit terakhir

Ia boleh mengubah suai bukan sahaja mesej yang kami serahkan, tetapi juga fail yang kami serahkan, dan akhirnya menggantikan id-komit terakhir

.

Kami mungkin terlepas fail tertentu semasa penyerahan tertentu Apabila kami menyerahkan semula, mungkin terdapat komit-id yang tidak berguna Jika semua orang melakukan ini, log git akan menjadi terlalu kemas untuk menjejaki fungsi yang lengkap

Andaikata kita mempunyai mesej log sedemikian

Andaikan kita ingin mengubah suai mesej log terakhir, kita boleh menggunakan arahan berikut:

* 98a75af (HEAD -> feature/JIRA123-amend-test) feat: [JIRA123] add feature 1.2
* 119f86e feat: [JIRA123] add feature 1.1
* 5dd0ad3 feat: [JIRA123] add feature 1
* c69f53d (origin/main, origin/feature/JIRA123-amend-test, origin/HEAD, main) Initial commit

Mari kita lihat Looking pada maklumat log, kami dapati kami telah menggantikan commit-id lama 98a75af dengan commit-id baharu 5e354d1, mengubah suai mesej dan tidak menambah nod

git commit --amend -m "feat: [JIRA123] add feature 1.2 and 1.3"

Kini fail dalam repo kami kelihatan seperti ini :

* 5e354d1 (HEAD -> feature/JIRA123-amend-test) feat: [JIRA123] add feature 1.2 and 1.3
* 119f86e feat: [JIRA123] add feature 1.1
* 5dd0ad3 feat: [JIRA123] add feature 1
* c69f53d (origin/main, origin/feature/JIRA123-amend-test, origin/HEAD, main) Initial commit

Andaikan kita terlupa fail konfigurasi config.yaml semasa menghantar ciri 1.3, dan tidak mahu mengubah suai log atau menambah id komit baharu, maka arahan berikut adalah sangat mudah untuk gunakan

.
├── README.md
└── feat1.txt

0 directories, 2 files

git commit --amend --no-edit is the soul Lihat fail repo semasa:

echo "feature 1.3 config info" > config.yaml
git add .
git commit --amend --no-edit

Lihat log git

.
.
├── README.md
├── config.yaml
└── feat1.txt

0 directories, 3 files

Mengetahui teknik ini, kami dapat memastikan setiap penyerahan yang kami buat mengandungi maklumat yang sah. Gambar yang menerangkan proses kelihatan seperti ini:

* 247572e (HEAD -> feature/JIRA123-amend-test) feat: [JIRA123] add feature 1.2 and 1.3
* 119f86e feat: [JIRA123] add feature 1.1
* 5dd0ad3 feat: [JIRA123] add feature 1
* c69f53d (origin/main, origin/feature/JIRA123-amend-test, origin/HEAD, main) Initial commit

Dengan bonus buff --no-edit, ia lebih berkuasa 3 langkah untuk menyelesaikannya! Simpan rekod komit Git yang bersih

Gunakan dengan bijak git rebase -i

Anda boleh melihat bahawa log di atas semuanya sedang membangunkan ciri1 Sebelum menggabungkan cabang ciri ke dalam cawangan utama, kita harus terus menggabungkan nod komit log Di sinilah

digunakan 🎜>

di mana n mewakili beberapa penyerahan terakhir Kami mempunyai tiga penyerahan untuk ciri 1 di atas, jadi kami boleh menggunakan:

git rebase -i HEAD~n
Selepas dijalankan, editor vim akan dipaparkan dengan kandungan berikut:

git rebase -i HEAD~3
Kaedah yang paling biasa digunakan untuk menggabungkan commit-id ialah skuasy dan fixup Yang pertama mengandungi mesej commit dan yang kedua tidak menggunakan fixup di sini, dan kemudian :wq untuk keluar

 1 pick 5dd0ad3 feat: [JIRA123] add feature 1
 2 pick 119f86e feat: [JIRA123] add feature 1.1
 3 pick 247572e feat: [JIRA123] add feature 1.2 and 1.3
 4
 5 # Rebase c69f53d..247572e onto c69f53d (3 commands)
 6 #
 7 # Commands:
 8 # p, pick <commit> = use commit
 9 # r, reword <commit> = use commit, but edit the commit message
10 # e, edit <commit> = use commit, but stop for amending
11 # s, squash <commit> = use commit, but meld into previous commit
12 # f, fixup <commit> = like "squash", but discard this commit's log message
13 # x, exec <command> = run command (the rest of the line) using shell
14 # d, drop <commit> = remove commit
15 # l, label <label> = label current HEAD with a name
16 # t, reset <label> = reset HEAD to a label
17 # m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]
18 # .       create a merge commit using the original merge commit's
19 # .       message (or the oneline, if no original merge commit was
20 # .       specified). Use -c <commit> to reword the commit message.
21 #
22 # These lines can be re-ordered; they are executed from top to bottom.
23 #
24 # If you remove a line here THAT COMMIT WILL BE LOST.
25 #
26 #   However, if you remove everything, the rebase will be aborted.
27 #
28 #
29 # Note that empty commits are commented out</commit></oneline></label></commit></commit></label></label></commit></command></commit></commit></commit></commit></commit>
Mari kita kembali Lihat log, ia sangat jelas

1 pick 5dd0ad3 feat: [JIRA123] add feature 1
2 fixup 119f86e feat: [JIRA123] add feature 1.1
3 fixup 247572e feat: [JIRA123] add feature 1.2 and 1.3
Gunakan rebase dengan baik

Ciri di atas telah dibangunkan sepenuhnya, dan cawangan utama juga telah dikemas kini oleh orang lain Kemudian gabungkan kembali ciri Sebelum cawangan utama, untuk mengelakkan konflik kod, anda perlu menggabungkan kandungan cawangan utama ke dalam ciri terlebih dahulu. Jika anda menggunakan arahan gabungan, akan ada gabungan tambahan nod, dan juga akan terdapat titik infleksi dalam sejarah log, yang bukan linear, jadi di sini Kita boleh menggunakan arahan rebase pada cawangan ciri
* 41cd711 (HEAD -> feature/JIRA123-amend-test) feat: [JIRA123] add feature 1
* c69f53d (origin/main, origin/feature/JIRA123-amend-test, origin/HEAD, main) Initial commit

git pull origin main --rebase
Perintah tarik secara automatik melakukan penggabungan untuk kami, tetapi di sini ia adalah dalam bentuk rebase Mari kita lihat log

3 langkah untuk menyelesaikannya! Simpan rekod komit Git yang bersih

Nod penyerahan fungsi feature1 kami di atas utama masih kekal. linear Seterusnya, anda boleh menolak kod, kemudian menyerahkan PR, dan menggabungkan ciri anda ke cawangan utama

Penerangan ringkas tentang perbezaan antara gabungan dan asas semula ialah ini:
* d40daa6 (HEAD -> feature/JIRA123-amend-test) feat: [JIRA123] add feature 1
* 446f463 (origin/main, origin/HEAD) Create main.properties
* c69f53d (origin/feature/JIRA123-amend-test, main) Initial commit

Saya menggunakan git pull origin main --rebase di sini untuk menghilangkan proses menukar utama dan menarik kandungan terkini dan kemudian menukar kembali Prinsip di belakangnya adalah seperti yang ditunjukkan dalam gambar di atas

Menggunakan rebase adalah Terdapat peraturan emas yang mesti dipatuhi Ini telah dikatakan sebelum ini, jadi saya tidak akan mengulanginya lagi

Ringkasan

Dengan tiga petua ini, saya. percaya log git semua orang akan menjadi sangat jelas Jika anda belum mengetahuinya, anda pasti boleh menggunakannya Jika ahli kumpulan anda tidak mengetahuinya, anda pasti boleh mempromosikannya

Pembelajaran yang disyorkan: "Tutorial Git

Atas ialah kandungan terperinci 3 langkah untuk menyelesaikannya! Simpan rekod komit Git yang bersih. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:csdn.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam