Git總結(jié)

1.安裝Git

git-scm.com/book/zh/v2 安裝地址

通過 git --version 來查看版本(是否安裝成功)

/*
 *命令行的簡單命令
 */
pwd // 當(dāng)前工作的路徑(linux上的命令dir是window)
tree // 查看樹狀結(jié)構(gòu)圖
rd //刪除文件夾
type nul>文件名稱  //創(chuàng)建文件
echo 內(nèi)容 > 寫入文件路徑
del //刪除文件

2.使用Git之前需要做的最小配置

配置 user 信息
配置 user.name 和 user.email
git config --global user.name '用戶名'
git config --global user.name '郵箱'

/*
 *config 的三個作用域
 * ----------省略等同于local-----------
 * $ git config --local  // local 只對某個倉庫有效
 * $ git config --global // global 對當(dāng)前用戶所有倉庫有效
 * $ git config --system // system 對系統(tǒng)所有登錄的用戶有效
 *.......................
 *--------顯示 config 的配置历极,加上--list --------
 * $ git config --list --local
 * $ git config --list --global
 * $ git config --list --system
 */

3.建Git倉庫

兩種場景:
1.把已有的項目代碼納入Git管理

cd 項目代碼所在的文件夾
git init

2.新建的項目直接用Git管理

cd 某個文件夾
git init your_project //會在當(dāng)前目錄下創(chuàng)建和項目名稱同名的文件夾作為倉庫

cd your_project
通過實踐得出local的優(yōu)先級要比global高(限于他倆之間)

4.工作區(qū)和暫存區(qū)

$ git add //后面可以跟多個文件
$ git commit -m '版本描述'  //添加到版本庫
$ git add -u //把git已經(jīng)管理的文件一起提交到暫存區(qū)
$ git status // 查看git當(dāng)前狀態(tài)
$ git log  // 查看git的日志

建議把寫好的文件(git add)放到暫存區(qū)浮毯,把為一個目的的所有文件生成一個commit提交到版本庫

5.給文件重命名的簡便方法

$ mv readme readme.md  //檢查狀態(tài)會給你提示
$ git add readme.md
$ git rm readme  // git很智能會認為我們在重命名

///////////簡便寫法/////////
$ git mv readme readme.md  //git提供的重命名
-------
$ git reset --hard //此項命令比較危險會清空暫存區(qū)所有的操作(進行復(fù)原)

6.通過git log查看版本演變歷史

$ git log --oneline //簡潔的查看commit的列表
$ git log -n4   // -n[val]代表查看最近的幾次歷史可以和--oneline 配合使用
$ git branch -v //查看本地有多少的分支
$ git log --all //查看所有分支的版本(默認是查看當(dāng)前分支的)
$ git log --all --graph // 圖形化的查看

7.通過圖形界面工具來查看版本歷史

$ gitk //查看版本歷史圖形化

8.探秘.git目錄

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        2020/1/31     23:49                hooks
d-----        2020/1/31     23:49                info
d-----         2020/2/1     15:36                logs
d-----         2020/2/1     16:12                objects
d-----        2020/1/31     23:49                refs
-a----         2020/2/1     16:12             22 COMMIT_EDITMSG
-a----        2020/1/31     23:49            130 config
-a----        2020/1/31     23:49             73 description
-a----         2020/2/1     20:13            216 gitk.cache
-a----        2020/1/31     23:49             23 HEAD
-a----         2020/2/2      0:51            466 index

HEAD //文件告訴我們現(xiàn)在工作在哪個分支上(這是個引用指向refs)
config //里面放的是配置信息(用戶名和郵箱)
refs // 它里面包含heads  tags
----------
refs => heads 里面放的是你創(chuàng)建的分支(多人協(xié)作開發(fā)會創(chuàng)建很多分支)
refs => tags //里面放的是你標(biāo)記的tags揽祥,指向commit。
objects //里面有很多松散的文件及刻,git會自我梳理,把過多的文件打包放在pack里淳衙。
// **git 中有tree的概念**
// 在git眼里只要內(nèi)容相同就是唯一的一個blob
/*
 *d-----         2020/2/1     16:12                ca
 *d-----         2020/2/1     15:36                ee
 *d-----         2020/2/1     15:36                ef
 *d-----        2020/1/31     23:49                info
 *d-----        2020/1/31     23:49                pack
 * // 根據(jù)git cat-file -t ca(兩位文件名和里面的編碼信息可以檢測出來類型)
 */
===============
$ git cat-file -t 跟編碼  //檢查類型
$ git cat-file -p         //根據(jù)對象的類型顯示其內(nèi)容

9.commit巢寡、tree、blob三個對象之間的關(guān)系

一個commit對應(yīng)著一個tree夸楣。一個tree下面包含著tree和blob宾抓。

10.分離頭指針情況下的注意事項

detached HEAD // 分離頭指針

分離頭指針是指你目前正在工作于沒有分支的情況下,你可以繼續(xù)做開發(fā)豫喧,但是如果偶爾有一天你切換分支工作石洗,沒有和分支掛鉤的文件會被git清理掉。(好處是你想做嘗試開發(fā)時可以使用紧显,如果感覺不好直接切換分支不用理會)

  • 如果變更的很重要一定要和分支綁定在一起

進一步理解 HEAD 和 branch

// 查看兩個commit的區(qū)別
$ git diff 編號  編號
$ git diff HEAD HEAD^1  // 每次加^1代表他的父級~1一樣^^

11.刪除不需要的的分支

使用 git branch -d (branch-name) // 如果刪除不掉用戶在有風(fēng)險把控的情況下可以使用 -D刪除讲衫。

12.怎么修改最新commit的message?

$ git commit --amend //windows打開commit進行修改 esc退出 大寫 ZZ 保存


13.怎么把間隔的幾個commit整理成一個

通過git rebase -i 編號最好從他父級 git rebase --root 從跟開始

  • 進入后pick為保留的孵班,s為合并的涉兽。后面一個頁面第一行描述一下

14.怎么比較暫存區(qū)和HEAD所含文件的差異

git diff --cached // 把暫存區(qū)的文件和HEAD指向的作比較

15.怎么比較工作區(qū)和暫存區(qū)所含文件的差異?

git diff //默認就是工作區(qū)和暫存區(qū)比較

git diff -- 文件名

不加文件名是吧工作區(qū)所有的文件和暫存區(qū)作比較

$ git diff [head] [head] -- 文件名
/*
 *比較兩個commit的文件區(qū)別
 */

16.如何讓暫存區(qū)恢復(fù)成和HEAD一樣重父?

git reset HEAD //恢復(fù)暫存區(qū)和HEAD一樣

17.如何讓工作區(qū)的文件恢復(fù)成和暫存區(qū)的一樣

  • 如果想變工作區(qū)的內(nèi)容用checkout暫存區(qū)用reset
$ git checkout -- 文件名  //把工作區(qū)文件恢復(fù)成暫存區(qū)一樣

18.怎么取消暫存區(qū)部分文件的更改

$ git reset HEAD -- 文件名  //把暫存區(qū)指定文件更改成原來

19.消除最近的幾次提交

$ git reset --hard 指針 // 恢復(fù)到指針的指向

20.正確刪除文件的方法

$ git rm 文件名

21.開發(fā)中臨時加塞了緊急任務(wù)怎么處理花椭?

$ git stash  // 先把當(dāng)前未完成任務(wù)放到一塊區(qū)域藏起來,處理緊急任務(wù)
$ git stash list  //查看區(qū)域列表
//////取出來有兩種辦法//////
$ git stash apply //取出暫時放的文件房午,不刪除可復(fù)用
$ git stash pop // 取出暫時放的文件矿辽,并刪除

22.如何指定不需要Git管理的文件

.gitignore 文件來配置不受git管理的文件

doc  //指定doc文件和文件夾里面的文件不受管理
doc/  //指定doc文件夾以下的文件不受管理
//如果doc和doc/同時存在,但要git管doc文件夾郭厌,不管doc文件袋倔,要怎么設(shè)置呢?
doc
!doc/*

23.如何將Git倉庫備份到本地

啞協(xié)議與智能協(xié)議


直觀區(qū)別: 啞協(xié)議傳輸進度不可見;只能協(xié)議傳輸可見

傳輸速度: 智能協(xié)議比啞協(xié)議傳輸速度要快折柠。

git命令之git remote的基本用法

1.git remote 不帶參數(shù)宾娜,列出已經(jīng)存在的遠程分支

2.git remote -v | --verbose 列出詳細信息,在每一個名字后面列出其遠程url扇售,此時前塔, -v 選項(譯注:此為 –verbose 的簡寫,取首字母),顯示對應(yīng)的克隆地址嚣艇。

3.git remote add url 添加一個遠程倉庫

修改遠程倉庫在本地名稱 git remote rename 已有 變更

24.配置公私鑰

ls -al ~/.ssh 查看是否存在現(xiàn)有的SSH秘鑰
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com" 生成新SSH秘鑰 。

drwxr-xr-x 1 dell 197121 0 2月 3 16:02 .
drwxr-xr-x 1 dell 197121 0 2月 3 01:24 ..
-rw-r--r-- 1 dell 197121 3381 2月 3 16:02 id_rsa (私鑰)
-rw-r--r-- 1 dell 197121 742 2月 3 16:02 id_rsa.pub (公鑰)
-rw-r--r-- 1 dell 197121 802 5月 1 2019 known_hosts
私鑰留在本地华弓,公鑰配置到公網(wǎng)上

25.把本地倉庫同步到GitHub

git push github --all //全都上傳到遠端
git fetch github 分支 //拉具體分支
git merge -h // 來處理
git merge --allow-unrelated-histories github/master //允許兩個不相關(guān)的分支進行merge

26.不同人修改了不同文件如何處理

先把分支fetch 下來食零,然后merge 。再push寂屏。

27.不同人修改了同文件的不同區(qū)域如何處理

每次做開發(fā)時和遠端同步一下是個好習(xí)慣 git pull (這個命令執(zhí)行了git fetch 贰谣,git merge)
思路:1.把遠端代碼拉下來進行merge可以執(zhí)行 git pull 。這時git會給你報沖突的問題迁霎,需要我們手動解決吱抚。可以利用圖形化考廉,和命令行多種解決方式秘豹。然后 git status 查看一下當(dāng)前的狀態(tài),會告訴你確不確定merge 芝此。如果確定git commit -am 最后push憋肖。

28.同時變更了文件名了文件內(nèi)容如何處理(別人還不知道)

遇見這種情況直接git pull git會非常智能的幫我們merge因痛。

29.把同一文件改成了不同的文件名如何處理

這種情況依舊用 git pull 看git會不會幫助我們自動merge』槠唬現(xiàn)實是git對于這種情況并不會。他會給我們報文件沖突鸵膏,讓我們自己協(xié)商解決膊升。依次刪除不需要的,添加更改的谭企。

30.Git集成使用的禁忌

  • 禁止向集成分支執(zhí)行 push -f 操作

$ git push -f的危害 會強制干掉一些commit

  • 禁止向集成分支執(zhí)行變更歷史的操作

公共的分支是禁止執(zhí)行 git rebase -i 命令的廓译,這樣會破壞歷史。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末债查,一起剝皮案震驚了整個濱河市非区,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌盹廷,老刑警劉巖征绸,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異俄占,居然都是意外死亡管怠,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門缸榄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來渤弛,“玉大人,你說我怎么就攤上這事甚带∷希” “怎么了佳头?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長晴氨。 經(jīng)常有香客問我畜晰,道長,這世上最難降的妖魔是什么瑞筐? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任凄鼻,我火速辦了婚禮,結(jié)果婚禮上聚假,老公的妹妹穿的比我還像新娘块蚌。我一直安慰自己,他們只是感情好膘格,可當(dāng)我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布峭范。 她就那樣靜靜地躺著,像睡著了一般瘪贱。 火紅的嫁衣襯著肌膚如雪纱控。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天菜秦,我揣著相機與錄音甜害,去河邊找鬼。 笑死球昨,一個胖子當(dāng)著我的面吹牛尔店,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播主慰,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼嚣州,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了共螺?” 一聲冷哼從身側(cè)響起该肴,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎藐不,沒想到半個月后匀哄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡佳吞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年拱雏,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片底扳。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡铸抑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出衷模,到底是詐尸還是另有隱情鹊汛,我是刑警寧澤蒲赂,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站刁憋,受9級特大地震影響滥嘴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜至耻,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一若皱、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧尘颓,春花似錦走触、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至卧土,卻和暖如春惫皱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背尤莺。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工旅敷, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人缝裁。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓扫皱,卻偏偏與公主長得像,于是被迫代替她去往敵國和親捷绑。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,927評論 2 355

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

  • 常用Git命令總結(jié) git config --global user.name "你的名字" 讓你全部的Git倉庫...
    繁星追逐閱讀 255評論 0 0
  • 說明:本次總結(jié)來自廖雪峰的官方網(wǎng)站氢妈,僅供學(xué)習(xí)粹污,如有侵權(quán)請聯(lián)系管理員刪除。 git命令 安裝git 安裝完成后需要配...
    test小星星閱讀 410評論 0 0
  • Git 在上家公司時使用git管理代碼首量,當(dāng)時使用的稀里糊涂壮吩,有些地方不是太明白。現(xiàn)在這家公司把代碼移到git上管理...
    圓土豆閱讀 604評論 0 50
  • 關(guān)于git加缘,之前總是遇到什么問題然后做了一個簡單總結(jié)鸭叙。今天決定來一個系統(tǒng)的總結(jié),加深一下自己對git的理解拣宏。 1沈贝、...
    丶灰太狼他叔閱讀 625評論 2 0
  • Add & Commit git init 初始化一個 Git 倉庫(repository),即把當(dāng)前所在目錄變成...
    冬絮閱讀 4,832評論 0 9