個人常用的git命令以及相關(guān)知識總結(jié)撒桨,具體git命令的介紹可以查看官網(wǎng)。
1.常用命令一覽
// 每個命令下的縮進為該命令下的一些參數(shù)或操作
1.init
2.status
3.diff
head
4.add
.
dir-path
file-path
5.commit
-m
--amend
6.rebase
-i head~n
7.log
-p
--graph
8.reflog
9.checkout
-b branch-name
-- dir-path/file-path
10.branch
-a
-d branch-name
-D branch-name
11.merge branch-name
12.pull
origin branch-name
13.push
--set-upstream origin branch-name
14.reset
--hard commit-hash
head dir-path/file-path
15.stash
pop
2.常用命令使用場景
1.init
新建項目時键兜,初始化一個文件夾作為git倉庫凤类。
2.status
查看被修改的文件有哪些。
使用場景:在每次提交代碼前使用普气,用于確認修改過的文件有哪些谜疤,避免提交用于測試而不需要提交的文件的前置操作。
具體使用場景:對接后端開發(fā)環(huán)境修改了axios.js
的配置现诀,為避免影響線上環(huán)境夷磕,不應(yīng)提交該文件,并在提交其他功能相關(guān)的文件以后仔沿,應(yīng)回退對axios.js
的修改坐桩。
3.diff
查看文件中具體的修改。
diff
命令將會顯示工作區(qū)
中文件的具體修改差異于未,經(jīng)過add
操作的文件,需要使用diff head
查看具體差異。
使用場景:在提交代碼前烘浦,確認每處修改是否正確抖坪,以及代碼中是否有多余的修改。
具體使用場景:我在進行add
和commit
操作前闷叉,會使用diff
/diff head
對文件進行檢查冠绢,看是否有console.log
沒有刪除敛劝。
(我們的項目中開發(fā)環(huán)境允許使用console.log
進行調(diào)試,但在commit
前會對修改過的文件中是否留有console.log
進行檢查。)還會用來檢驗是否有錯別字吵护,或者在某個不經(jīng)意間敲了鍵盤,增加了多余的代碼蛮原。
4.add
用于將
工作區(qū)
中的文件添加至暫存區(qū)
揍异,為commit
操作做準(zhǔn)備√汛可以使用add .
添加所有工作區(qū)
中的文件甚颂,也可以使用add '文件路徑'
/add '文件夾路徑'
,添加單個文件或單個文件夾路徑下的所有文件秀菱。
使用場景:commit
前振诬,將工作區(qū)
中的文件添加至暫存區(qū)
。
具體使用場景:add s/p
=> tab 補全
=> add src/public
衍菱,將public
文件夾下的文件添加至?xí)捍鎱^(qū)赶么。這里主要是想介紹通過文件路徑
/文件夾路徑
添加特定的文件。
5.commit
提交暫存區(qū)中的文件脊串,形成一次提交記錄辫呻。平時主要使用
commit -m '對本次提交的說明'
,說明中注明本次提交所涉及的相關(guān)功能洪规,以便于在日后的維護中印屁,可以便捷的了解本次提交做了什么操作。
使用場景:功能或任務(wù)完成后斩例,提交相應(yīng)文件雄人。
5.1 --amend
修改上一次
commit
中的錯誤。如果因為手誤導(dǎo)致提交了錯誤的commit
信息念赶,可以使用commit --amend
修改上一次的提交信息础钠。
5.2 commit時機
如果想更好的對版本進行管理,需要控制好commit的時機叉谜,如果每修改一行代碼就進行一次提交旗吁,將能對整個git倉庫中的文件進行行級別的版本控制。不過這種操作方式很不便利停局,個人使用的是實現(xiàn)某個功能后很钓,便對代碼進行一次提交香府,當(dāng)對下一個功能進行開發(fā)時,遇到阻礙時码倦,則可以使用git checkout -- src
回退所有的修改企孩,從頭再來,這樣可以保持每段時間內(nèi)只修改部分功能袁稽,而不會出現(xiàn)一次開發(fā)過程中存在大量文件被修改勿璃,提交時忘記去除臨時代碼,以及避免一段時間開發(fā)后直接commit -a
推汽。如何避免開發(fā)一個功能存在n多提交信息的問題补疑,請看下一節(jié)rebase
命令。
6.rebase -i head~n
對n個最新的提交進行操作歹撒。使用該命令后莲组,會pick最新的n條提交記錄,通過將
pick
修改為[edit
|squash
|fixup
]栈妆,對提交記錄進行[修改
|合并
|合并并丟棄該提交
]
使用場景:
- 1.修改某個項目組成員的某個提交胁编。
- 2.功能開發(fā)完畢以后,將多個提交合并成一個鳞尔。
7.log
顯示當(dāng)前分支的提交歷史嬉橙。
-p
參數(shù):顯示提交歷史以及文件中具體的修改。
--graph
參數(shù):顯示提交歷史以及分支操作的圖標(biāo)形式寥假。
8.reflog
顯示當(dāng)前倉庫所有的操作歷史市框,除了提交記錄,還有分支操作記錄糕韧。
9.checkout
切換分支/回滾文件枫振。
checkout branch-name
:切換分支。
checkout -b branch-name
:將會創(chuàng)建并切換至該分支萤彩。
checkout -- '文件路徑'/'文件夾路徑'
:回滾單個文件粪滤,或文件夾下的所有文件。
在遠程倉庫新建了branchA
雀扶,在本地拉取代碼以后杖小,可以通過checkout branchA
直接基于遠程分支創(chuàng)建并切換至branchA
。
10.branch
branch
:顯示當(dāng)前分支及本地所有分支愚墓。
branch -a
:顯示當(dāng)前分支以及本地及遠程倉庫的所有分支予权。
branch branch-name
:創(chuàng)建branch-name
分支。
branch -d branch-name
:刪除branch-name
分支浪册。如果分支被合并了以后扫腺,可以進行刪除操作,否則會報錯村象。
branch -D branch-name
:強制刪除branch-name
分支笆环。
11.merge
merge branch-name
:將branch-name
分支合并至當(dāng)前分支攒至。
12.pull
pull
:在設(shè)置了上游分支的情況下,拉取當(dāng)前分支在遠程倉庫中的最近版本到本地分支躁劣。
pull origin branch-name
:拉取遠程倉庫中的branch-name
的最新版本到當(dāng)前本地分支嗓袱。
推薦在每天上午開始工作前、中午习绢、晚上進行pull
操作,防止沒有拉取新代碼導(dǎo)致合并時出現(xiàn)沖突蝙昙。項目使用敏捷看板進行項目管理闪萄,每次開發(fā)新任務(wù)前會進行pull
操作,以保證開發(fā)新功能時奇颠,本地代碼是最新版本败去。
13.push
push
:在設(shè)置了上游分支的情況下,將當(dāng)前分支推送至遠程倉庫中設(shè)置的上游分支烈拒。如果遠程倉庫中圆裕,上游分支被刪除了,該操作會重新創(chuàng)建對應(yīng)的新分支荆几。
push --set-upstream origin branch-name
:將branch-name
分支推送至遠程倉庫中吓妆,并將遠程倉庫中的branch-name
設(shè)置為該分支的上游分支。
14.reset
reset --hard commit-hash
:回退代碼至指定commit-hash
的版本吨铸。需要進行回退操作時行拢,通過log
命令查詢需要回退的代碼版本,記錄commit
的hash
值诞吱,一般取前七位就可以舟奠,與reflog
保持一致。如果要回到最新版本房维,使用reflog
找到最新版本的hash
沼瘫,然后reset --hard latest-hash
即可。
reset head file-path/dir-path
:將暫存區(qū)
中的文件移至工作區(qū)咙俩。add
了錯誤的文件至暫存區(qū)
時耿戚,可以通過該命令移出。
15.stash
stash
:“臨時儲藏”當(dāng)前修改暴浦。有時候做了文件修改以后溅话,需要進行切換分支或者pull
操作時,會提示有未提交的修改歌焦,可以通過該命令儲藏當(dāng)前修改飞几,在進行了如pull
等其他操作以后,再通過git stash pop
恢復(fù)儲藏的代碼独撇。
3.總結(jié)
這篇文章記錄了個人開發(fā)過程中常用的一些git命令屑墨,以及對其的一些理解躁锁,本文沒有記錄命令的具體效果,只記錄了一些自己經(jīng)常使用的情況卵史。其中對于 commit
時機战转、 通過文件夾路徑add
文件、 通過status
以及diff
確認修改的文件及內(nèi)容以躯,是作為一個好的開發(fā)人員槐秧,在協(xié)同工作中需要注意的地方。