標簽: Git
上節給大家講解了有關於Git的一些概念,Git的引入,Git的四個組成部分,Git文件的狀態,以及
Git的下載安裝;前面也講過Git和SVN有個明顯的差別就是,Git可以不需要網絡就可以進行版本
控制,這是因為Git中每個電腦都擁有一個本地的版本庫,而遠程的倉庫僅僅是作為我們交換修改
的一個工具!即使失去這個工具,我們也可以干活,只是交換修改不方便罷了,假如是SVN,遠程
服務器掛了…所以,我們使用Git的時候大部分時間都是在進行Git的一些本地操作,當然還有
遠程服務器分支合並的一些問題等,本節我們就先來熟悉一波本地操作的一些常用指令!本節
講解的內容概要如下:
1.設置您的身份信息(git config) 2.獲取幫助(git help) 3.創建本地的代碼倉庫(git init) 4.將文件放入暫存區(git add) 5.將暫存區的內容提交到本地倉庫(git commit) 6.查看當前工作區與暫存區的狀態(git status) 7.查看工作區與暫存區的差異(git diff) 8.查看提交更改的記錄(git log) 9.文件恢復——未add(git checkout) 10.文件恢復——已add未commit(git reset) 11.文件恢復(已commit)——版本回退(git reset HEAD^) 12.查看輸入的每一條指令(git reflog) 13.Git命令別名(git config –xxx alias.xxx xxx) 14.Git命令的自動補全(按兩次Tab鍵)
好的,開始本節內容(要先安裝好Git哦!)~
安裝完Git,我們第一件要做的事情是先配置我們的身份信息,作為自己參與團隊協作的
一個身份標記,比如誰對某個文件進行了修改,鍵入下述命令:
git config --global user.name "coder-pig"
git config --global user.email "[email protected]"
配置完後,把”“部分信息去掉,輸多一次上面的指令,可以看到是否配置成功
也可以鍵入下述指令來查看所有的Git設置:
git config --list
另外,上面設置的配置信息是全局的,一般我們在公司上班,基本協作的都是公司 僅僅只需要把global改成local即可~此時這個倉庫的git配置就不會和全局的相同, 和其他的命令行一樣,Git同樣是帶有help指令的,當我們遇到沒見過,又或者忘記用法的 把init改成你要查詢的那個指令即可!比如git help add! win下會打開一個Git的Manual(手冊)的頁面,可以在之類查看指令的一些用法 當然你也可以到Git官方手冊中查找對應的指令! 你可以直接鍵入下述指令創建一個新的帶Git倉庫的項目: 把GitForTest改成你想創建的工程名即可!接著我們可以來到新創建的工程的 當然假如你已經有項目了,想在之前項目的基礎上添加Git倉庫,那麼通 過命令行或者git bash來到當前工程的文件夾目錄下,鍵入下述指令即可 前面Git文件狀態我們講過假如文件未加入版本控制,那麼該文件處於Untracked 假如要添加的文件很多的話,這樣一個個添加顯得有些麻煩,我們可以一次性的添加多個: 1)將所有tracked文件中被修改或已刪除的文件信息添加到Git暫存區,不會處理untracked的文件! 2)將所有tracked文件中被修改或已刪除的文件信息添加到Git倉庫,會把理untracked的文件信息 3)把當前工作區的所有文件全加入到Git暫存區 除了上面三種外,git其實還為我們提供了交互界面模式,我們可以鍵入: 上圖的流程是這樣的: 1.我先在GitForTest的文件夾裡創建了兩個文件 當然還有其他幾個指令,限於篇幅,有興趣的可以自己研究研究! 我們可以通過git commit -m “xxx”指令將暫存區的內容提交到倉庫中 後面的-m是對本次提交的說明,”xxx”是說明內容,不該偷懶省去,假如你這裡不 另外,我們的項目可能存在一些幾百年不變的或者自動生成的文件,比如lib, 我們可以用git status指令來查看工作區與暫存區的當前情況,比如工作區有什麼 比如我這裡修改了下README.md文件,只是改了還沒add: add文件後: commit提交暫存區內容 恩,很簡單,另外,你還可以用下述指令,讓結果以簡短的形式輸出~ 上面我們可以通過git status獲取當前工作區與緩存區的狀態,僅僅是狀態, 這樣就可以看到當前的工作區與暫存區中對比,做了哪些修改! 還記得之前的網購的例子嗎,我們可以在我的訂單中找到自己的訂單記錄, 當然,你也可以調用下述指令獲得更精簡的結果 如果上面還滿足不了你的話,可以參考:Viewing the Commit History 我們可以直接右鍵刪除一個文件,又或者進入命令行,鍵入rm xxx.xxx將文件刪除, Git告訴你工作區的文件被刪除了,然後你有兩種選擇: 1)把暫存區裡的文件也刪了,那麼鍵入: 2)誤刪了,將暫存區的文件恢復到工作區,那麼可以鍵入: duang!被刪除的文件又回來了~ 假如你已經把文件用git add到了暫存區,那麼此時你直接用checkout文件是沒有 此時再調用: 文件即可恢復原樣! 假如,我們的文件修改已經commit了,而你無端端的又後悔了,想恢復成上一次 恩,我們鍵入git log後可以看到版本已經回退到上一個版本了! 嘿嘿,無壓力,你突然又後悔了,想回到新的那個版本,嗯…好吧,同樣是上面 你可能會支支吾吾的過來對我說:”恩,那個我剛剛把命令行關了,那個最新的版 拿到版本號,git reset即可~ 如果想偷懶,想少敲幾個字母,可以為命令設置別名,然後鍵入別名就調用對應指令, 輸入Git命令的時候按兩次Tab就可以了! 本節給大家詳細地講解了一波Git的本地命令,應該可以滿足日常的需要了,學習這一節,建議
的項目,這裡可以設置全局的配置,用global<喎?http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vc3Ryb25nPqOsv8nE3MTj09DX1Ly6y73Iy7XEz+7Ev6OsxMfDtDxiciAvPg0KxOO/ydLUtaW2wLXEzqrV4rj2z+7Ev8no1sPSu7j2vtayv7XExeTWw6OsvPzI68/CyvbD/MHuo7o8L3A+DQo8cHJlIGNsYXNzPQ=="brush:java;">
git config --local user.name "coder-pig"
git config --local user.email "[email protected]"
從而可以避免一些不必要的麻煩!
2.獲取幫助
指令,我們可以鍵入:
git help init
而Ubuntu下則會直接在命令行輸出:
3.創建本地的代碼倉庫
git init GitForTest
目錄下,這裡需要 修改下讓隱藏文件可見,就可以看到.git的文件夾裡,裡面
東東就是我們git倉庫的東東了,切記 別隨意去改或者刪除裡面的東西!(你也
可以鍵入:ls -ah來查看隱藏文件)
為你的項目添加本地Git倉庫:
git init
4.將文件放入暫存區
(未跟蹤)的狀態,我們可以通過git add指令將文件添加到暫存區中此時文件會變
成Tracked(已跟蹤)狀態!我們可以使用下面的指令,將文件一個個添加到暫存區中:
git add README.md
git add -u
也加入Git暫存區
git add -A
git add .
git add -i
2.鍵入git add -i,進入後,鍵入4,選擇添加untracked的文件
3.他給我們列出了untracked的文件,然後我們根據序號來添加文件
4.輸入?會彈出相關提示,然後直接回車,結束選擇!
5.然後再次輸入git add -i,輸入4,可以看到已不存在untacked的文件了!
5.將暫存區的內容提交到本地倉庫
git commit -m "修改了xxx"
輸入,-m “xxx” 的話,也會讓你進入Vi/Vim來編寫聲明信息的~所以建議還是在這
裡進行提交內容的說明吧!
gen,bin文件夾等,我們沒必要每次都把這些都commit,我們可以在.git同級
的目錄下創建一個名為.gitignore的文件,然後編輯內容,把不需要提交的文
件寫上,那麼commit的時候就會自動忽略這些文件的了~:
6.查看當前工作區與暫存區的狀態
文件和暫存區的文件 對比,發生了改變,要不要add下?又比如暫存區裡有東西add
了,但是還沒提交等等,直接鍵入下述指令:
git status
git status -s
7.查看工作區與暫存區的差異
假如我們需要查看發生改變的內容,那麼你需要鍵入下述指令:
git diff
PS:上面是我們在README.md文件裡添加了一條語句,然後再鍵入git diff!
8.查看提交更改的記錄
同樣,在Git中,我們也可以查看所有commit的記錄!可以鍵入下述指令:
git log
git log --oneline
對log進行定制,比如:
9.文件恢復——未add
但是刪除的僅僅是 當前工作區裡的文件,暫存區裡還是存在著該文件的,所以此時
你鍵入git status的話,你會看到這樣的結果:
git rm "xxx.xxx"
git commit -m "xxx"
git checkout -- xxx.xxx
當然,上面的checkout不止適用於誤刪文件,當你把一個文件改得面目全非的時候,
你突然後悔了,但是你已經ctrl+s保存了很多次代碼了,你可以用用上述指令回到
這個文件的最初樣子!(前提是你還沒add!)
10.文件恢復——已add未commit
作用的!我們需要通過git reset指令來廢除此次修改記錄(版本回退),讓當前文件
回到上一次提交時的狀態!鍵入:
git reset HEAD xxx.xxx
git checkout -- xxx.xxx
11.文件恢復(已commit)——版本回退
commit時的文件,又或者上上次的,這時候你可能開始方了,不過Git為我們提
供了時光機(版本回退),我們可以通過下述指令回退到上一個版本:
git reset HEAD^
如果是上上個版本,你只需加多^,再上一個版本繼續加^,如此類推!
當然,除了上面的形式,你還可以根據版本號來回退,比如這裡我退到第一個版本
git reset --hard 8c3f91f
的指令:不過版本號改成最新那次commit的版本號就可以了!
git reset --hard cf2d155
12.查看輸入的每一條指令
本號找不著了,git log也找不到那個最新的版本號,那我是不是不能回未來了?
“幸運的是,Git時光機會記錄你輸入的每一條指令,你只需鍵入下述指令:
git reflog
另外有一點要注意的是:git reflog並不會永遠保存,
Git會定期清理“用不到的對象”,所以別指望還能找到幾個月前的提交!
13.Git命令別名
比如將status設置成st:
14.Git命令的自動補全
小結:
自己建一個倉庫,按著一步步走一遍指令,相信你會獲益匪淺,敲得多就熟悉了!下節我們來
講解分支相關的概念以及指令!謝謝~