Git基礎(chǔ)

1. 配置

使用git之前,必須讓git知道你是誰(代碼作者)府框,以及如何聯(lián)系(給你發(fā)郵件):

git config --global user.name "Your Name"
git config --global user.email "your_email@whatever.com"

備注:如果要修改配置,重新執(zhí)行上述命令。

查看所有的配置:

git config --list

2. 創(chuàng)建版本庫

新建目錄隅忿,初始化為Git代碼庫

git init [project-name]

在當(dāng)前目錄新建Git代碼庫

mkdir [project-name]
cd [project-name]
git init

從遠(yuǎn)程下載項目和項目歷史

git clone [url]

3. 增加/刪除/修改/提交文件

查看狀態(tài):

git status

Changes to be committed:(默認(rèn)綠色)待提交的改變(還未執(zhí)行g(shù)it commit)
Changes not staged for commit: (默認(rèn)紅色)待加入暫存區(qū)的改變(還未執(zhí)行g(shù)it add)
Untracked files: (默認(rèn)紅色)未追蹤的文件(新文件在版本庫的狀態(tài))

查看變更內(nèi)容

git diff

添加文件/目錄到暫存區(qū)

git add [file1] [file2] ...     // 添加指定文件
git add [dir]       // 添加指定目錄到暫存區(qū)
git add .               // 添加當(dāng)前目錄下所有文件
git add -p          // 針對文件的多處變化,可以實現(xiàn)分次提交(每個文件的修改都需要確認(rèn))

刪除文件

git rm [file1] [file2] ...  // 刪除工作區(qū)文件邦尊,并且將這次刪除加入暫存區(qū)
git rm --cached [file]          // 停止追蹤指定文件背桐,但該文件保留在工作區(qū)

修改文件名,并加入到暫存區(qū)

git mv [src-file] [dist-file]

提交文件到倉庫區(qū)

git commit -m "message"

其他提交文件到倉庫區(qū)

git commit [file1] [file2] ... -m "message" // 添加指定文件到倉庫蝉揍,并做comment
git commit -a       // 提交工作區(qū)被改變的文件到倉庫區(qū)(彈出界面链峭,展示當(dāng)前被改變的文件,需要自定義comment)
git commit -am "message"    // 提交工作區(qū)被改變的文件直接到倉庫區(qū)又沾,并做comment
git commit -v   // 彈出新窗口弊仪,展示diff信息,comment并提交
git commit --amend -m "message" // 修改最后一次commit的comment
git commit --amend [file1] [file2]...   // 將文件加入到最后一次提交記錄中(對新文件不生效)

4. 查看記錄

顯示當(dāng)前分支的版本歷史

git log

顯示commit記錄杖刷,每次commit的發(fā)生變更的文件

git log --stat

顯示過去5次的提交励饵,并在同一行展示

git log -5 --pretty --oneline

小技巧:給命令去別名,查看最近N次提交的信息(包含作者滑燃,提交日期役听,commitID,提交信息等)
git config --global alias.logs = 'log --pretty=format:"%h %an(%ad)-%s" --date=format:"%Y-%m-%d %H:%M:%S"'

git logs: 查看所有的提交
git logs -10: 查看最近10次的提交記錄

查看提交的git日志(以圖的形式展示)

git log --graph

小技巧:
git config --global alias.graph 'logs --graph'

比較工作區(qū)和暫存區(qū)的差異

git diff

比較兩個分支的差異

git diff master develop --stat  // 比較兩個分支的差異表窘,展示每個文件的修改情況
git diff master develop -- [file]   // 比較兩個分支的差異典予,展示指定文件的具體差異
git diff commitId commitId -- [file]    // 比較兩次提交的差異,展示指定文件的具體差異

5. 撤銷

撤銷工作區(qū)的修改

git checkout .      // 撤銷工作區(qū)所有的修改
git checkout -- index.html      // 撤銷工作區(qū)指定文件的修改

撤銷暫存區(qū)的修改

git reset .     // 撤銷暫存區(qū)的文件到工作區(qū)乐严,但是修改依然保留
git reset index.html        // 撤銷暫存區(qū)指定的文件瘤袖,但是修改依然保留
git reset --hard HEAD       // 撤銷工作區(qū)和暫存區(qū)的修改(但是新增文件不在此約束下,依然存在)
git clean -df           // 從工作目錄中移除沒有track的文件

6. 分支管理

顯示本地所有分支

git branch

顯示所有遠(yuǎn)程分支

git branch -r

列出所有本地分支和遠(yuǎn)程分支

git branch -a

新建分支昂验,但是停留在當(dāng)前分支

git branch [branch-name]

新建一個分支孽椰,與指定的遠(yuǎn)程分支建立追蹤關(guān)系

git branch --track [branch] [remote-branch]

刪除本地分支

git branch -d [branch-name]     // 刪除已經(jīng)合并的分支(刪除還未合并的分支,會報錯) 
git branch -D [branch-name]     // 刪除指定分支(強制刪除)

刪除遠(yuǎn)程分支

git branch -dr  // 刪除與遠(yuǎn)程分支的聯(lián)系

git push origin --delete [branch-name]  // 刪除遠(yuǎn)程分支
OR
git push origin :[branch-name]

切換到該分支

git checkout -                      // 切換到上一個分支
git checkout [branch]           // 目標(biāo)分支存在凛篙,切換到指定分支
git checkout -b [branch]    // 目標(biāo)分支不存在黍匾,新建分支并切換到指定分支

將現(xiàn)有本地分支和遠(yuǎn)程分支建立追蹤關(guān)系

git branch --set-upstream [branch] [remote-branch]

合并指定分支到當(dāng)前分支

git merge [branch]
git merge [remote-branch]

git cherry-pick [commit]    // 選擇指定的commit合并到當(dāng)前分支

7. Tag管理

展示所有本地標(biāo)簽

git tag
git tag -n      // 展示tag列表和對應(yīng)的message信息

創(chuàng)建Tag

git tag [tagname]
git tag [tagname] -m "message"      // 添加tag的同時添加comment注釋
git tag [tagname] [commitid] -m "message"   // 對指定的commitID添加tag并添加comment注釋

刪除Tag

git tag -d [tagname]

展示Tag信息

git show [tagname]

提交Tag到遠(yuǎn)程

git push [remote] [tag]
git push [remote] --tags        // 提交本地所有tag到遠(yuǎn)程

新建分支,并指向Tag

git checkout -b [branch] [tag]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末呛梆,一起剝皮案震驚了整個濱河市锐涯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌填物,老刑警劉巖纹腌,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件霎终,死亡現(xiàn)場離奇詭異,居然都是意外死亡升薯,警方通過查閱死者的電腦和手機莱褒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來涎劈,“玉大人广凸,你說我怎么就攤上這事≈朊叮” “怎么了谅海?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蹦浦。 經(jīng)常有香客問我扭吁,道長,這世上最難降的妖魔是什么盲镶? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任侥袜,我火速辦了婚禮,結(jié)果婚禮上溉贿,老公的妹妹穿的比我還像新娘枫吧。我一直安慰自己,他們只是感情好顽照,可當(dāng)我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著闽寡,像睡著了一般代兵。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上爷狈,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天植影,我揣著相機與錄音,去河邊找鬼涎永。 笑死思币,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的羡微。 我是一名探鬼主播谷饿,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼妈倔!你這毒婦竟也來了博投?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤盯蝴,失蹤者是張志新(化名)和其女友劉穎毅哗,沒想到半個月后听怕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡虑绵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年尿瞭,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片翅睛。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡声搁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出宏所,到底是詐尸還是另有隱情酥艳,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布爬骤,位于F島的核電站充石,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏霞玄。R本人自食惡果不足惜骤铃,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望坷剧。 院中可真熱鬧惰爬,春花似錦、人聲如沸惫企。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽狞尔。三九已至丛版,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間偏序,已是汗流浹背页畦。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留研儒,地道東北人豫缨。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像端朵,于是被迫代替她去往敵國和親好芭。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容