個人git知識總結(jié)

個人常用的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查看具體差異。

使用場景:在提交代碼前烘浦,確認每處修改是否正確抖坪,以及代碼中是否有多余的修改。

具體使用場景:我在進行addcommit操作前闷叉,會使用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命令查詢需要回退的代碼版本,記錄commithash值诞吱,一般取前七位就可以舟奠,與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é)同工作中需要注意的地方。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末忧设,一起剝皮案震驚了整個濱河市刁标,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌址晕,老刑警劉巖膀懈,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異谨垃,居然都是意外死亡启搂,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門刘陶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來胳赌,“玉大人,你說我怎么就攤上這事匙隔⌒僦” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵牡直,是天一觀的道長缀匕。 經(jīng)常有香客問我,道長碰逸,這世上最難降的妖魔是什么乡小? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮饵史,結(jié)果婚禮上满钟,老公的妹妹穿的比我還像新娘。我一直安慰自己胳喷,他們只是感情好湃番,可當(dāng)我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著吭露,像睡著了一般吠撮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上讲竿,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天泥兰,我揣著相機與錄音弄屡,去河邊找鬼。 笑死鞋诗,一個胖子當(dāng)著我的面吹牛膀捷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播削彬,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼全庸,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了融痛?” 一聲冷哼從身側(cè)響起糕篇,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎酌心,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體挑豌,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡安券,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了氓英。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片侯勉。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖铝阐,靈堂內(nèi)的尸體忽然破棺而出址貌,到底是詐尸還是另有隱情,我是刑警寧澤徘键,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布练对,位于F島的核電站,受9級特大地震影響吹害,放射性物質(zhì)發(fā)生泄漏螟凭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一它呀、第九天 我趴在偏房一處隱蔽的房頂上張望螺男。 院中可真熱鬧,春花似錦纵穿、人聲如沸下隧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽淆院。三九已至,卻和暖如春句惯,著一層夾襖步出監(jiān)牢的瞬間迫筑,已是汗流浹背宪赶。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留脯燃,地道東北人搂妻。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像辕棚,于是被迫代替她去往敵國和親欲主。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,472評論 2 348