
Git是目前世界上最先進的分布式版本控制系統(tǒng)。github是全世界最大、質(zhì)量最高的代碼托管平臺?,F(xiàn)如今在github上沒有自己維護的項目,都不好意思和別人聊天。
裝*只是學(xué)習(xí)git的一個原因,更重要的原因是我們要維護代碼的版本,并且希望網(wǎng)絡(luò)上有一份永久的存儲,這樣我們可以將代碼回退到任意歷史版本,可以和別人協(xié)作,在切換工作環(huán)境之后可以輕易獲得自己曾經(jīng)寫過的代碼。 Git 是目前世界上最先進的分布式版本控制系統(tǒng),越來越多的公司使用 Git 來管理代碼庫,我們一起開啟 Git 的學(xué)習(xí)之旅吧。
紙上得來終覺淺,絕知此事要躬行。
1.安裝 windows:到git官網(wǎng)上下載,Download git,下載后會有一個Git Bash的命令行工具,以后就用這個工具來使用git。 
2.初次運行Git前的配置2.1 用戶信息
當(dāng)安裝完 Git 應(yīng)該做的第一件事就是設(shè)置你的用戶名稱與郵件地址。這樣做很重要,因為每一個 Git 的提交都會使用這些信息,并且它會寫入到你的每一次提交中,不可更改: 復(fù)制 git config --global user.name 'xiaoshuaisou'
git config --global user.email xiaoshuaosu@163.cn
如果使用了 --global 選項,那么該命令只需要運行一次,因為之后無論你在該系統(tǒng)上做任何事情, Git 都會使用那些信息。當(dāng)你想針對特定項目使用不同的用戶名稱與郵件地址時,可以在那個項目目錄下運行沒有 --global 選項的命令來配置。 如果想要檢查你的配置,可以使用 git config --list 命令來列出所有 Git 當(dāng)時能找到的配置。 你可以通過輸入 git config <key> :來檢查 Git 的某一項配置,如: 復(fù)制 git config user.name
我們在安裝好git之后,先在本地新建一個工作目錄,目錄的位置可以自己來定,也可以在桌面右鍵,點擊Git Bash Here,使用cd命令進入自己想要創(chuàng)建工作目錄的路徑,然后使用mkdir [目錄名]在當(dāng)前路徑創(chuàng)建工作目錄。 ? ? 在我們創(chuàng)建好工作目錄之后,在Git Bash中使用命令git init 在當(dāng)前目錄生成本地git版本庫,hooks:存放一些shell腳本,Info:exclude:存放倉庫的一些信息,logs:保存所有更新的引用記錄,objects:存放所有的git對象,config:git倉庫的配置文件,description:倉庫的描述信息,主要給gitweb等git托管系統(tǒng)使用,index:暫存區(qū)(stage)一個二進制文件,HEAD:映射到ref引用,能夠找到下一次commit的前一次哈希值,ORIG_HEAD:HEAD指針的前一個狀態(tài)..等等。 ? ? 本地倉庫分區(qū)三個區(qū)域:工作區(qū)、暫存區(qū)、倉庫。? ? 這三個區(qū)域分別對應(yīng)不同的狀態(tài),這個狀態(tài)我們可以在Git Bash中使用命令git status 來查看。 工作區(qū):工作區(qū)是我們在編輯代碼文檔等的區(qū)域,在這個區(qū)域我們可以使用git status 查看到當(dāng)前修改過或新增的文件都為紅色字體,我們可以通過其顯示的狀態(tài)來確定當(dāng)前文件有沒有被修改“Untracked files”。 暫存區(qū):暫存區(qū)是我們可以將編輯好的文檔等暫時保存的區(qū)域,將工作區(qū)的文檔等提交暫存區(qū)的命令git add /路徑/文件名 ,這時候我們使用git status 可以看到綠色字體,里面是我們創(chuàng)建并提交到暫存區(qū)的文件。 倉庫:本地倉庫是我們保存本地所有經(jīng)過上傳的文件,這些文件會默認(rèn)保存在master分支,master分支是git生成版本庫git init 的時候默認(rèn)自動創(chuàng)建的分支,我們將暫存區(qū)的文檔等提交到本地倉庫的命令是git commit -m '更新說明' ,提交到倉庫之后我們在使用git status 就會提示我們nothing to commit, working tree clean ,表明我們將所有新文件都提交到了本地倉庫,這時候的暫存區(qū)是干凈的。 3.獲取 Git 倉庫有兩種取得 Git 項目倉庫的方法。第一種是在現(xiàn)有項目或目錄下導(dǎo)入所有文件到 Git 中;第二種是從一個服務(wù)器克隆一個現(xiàn)有的 Git 倉庫。 復(fù)制 # 在當(dāng)前目錄新建一個Git代碼庫
$ git init
# 新建一個目錄,將其初始化為Git代碼庫
$ git init [project-name]
# 下載一個項目和它的整個代碼歷史
$ git clone [url]
3.2 clone示例庫一般來說,我們會用遠(yuǎn)程倉庫來對代碼進行備份,同時便于多人協(xié)作。作為實驗?zāi)憧梢缘?/span>github,oschina或者碼市上去注冊一個賬號并建立一個遠(yuǎn)程倉庫。 項目一般有公開和私有之分,由于是試驗,選擇公開的就好。 創(chuàng)建好遠(yuǎn)程倉庫之后,項目界面上有該倉庫的地址,如https://git./lanqiao/gitdemo.git——這是本教程作為示例的倉庫 接下來,可以回到計算機系統(tǒng),用命令將其clone下來 復(fù)制 git clone https://git./lanqiao/gitdemo.git

我們會在當(dāng)前目錄下得到一個gitdemo目錄,查看其內(nèi)的文件,只有一個.git隱藏文件夾,別的什么也沒有(讀者在閱讀時,情況有些變化,里面可能已經(jīng)有很多內(nèi)容了)。 這樣你就得到了一個與遠(yuǎn)程倉庫一模一樣的文件倉庫。 Git 有三種狀態(tài),你的文件可能處于其中之一:已修改(modified)、已暫存(staged)和已提交(committed)。 已修改表示修改了文件,但還沒跟蹤,如新增的文件和剛修改過的文件。 已暫存表示對一個已修改文件的當(dāng)前版本做了標(biāo)記(git add )。 已提交表示數(shù)據(jù)已經(jīng)安全地保存在本地數(shù)據(jù)庫中(git commit )。
由此引入 Git 項目的三個工作區(qū)域的概念:工作目錄、暫存區(qū)域以及Git倉庫。 
工作目錄、暫存區(qū)域以及 Git 倉庫. 工作目錄是放在磁盤上供你使用或修改的文件及目錄總和。 暫存區(qū)域是一個文件,緩存文件快照,有時候也被稱作“索引”,不過一般說法還是叫暫存區(qū)域。 Git倉庫是 Git 用來保存項目的元數(shù)據(jù)和文件快照的地方,記錄了所有歷史提交。
基本的 Git 工作流程如下: 在工作目錄中修改文件。 暫存文件(git add ),將文件的快照放入暫存區(qū)域。 提交更新(git commit ),找到暫存區(qū)域的文件,將快照永久性存儲到 Git 倉庫。

需要注意的是,文件快照必須先經(jīng)過暫存區(qū),才能到倉庫區(qū)。盤點之前的操作,1.txt經(jīng)過暫存并提交,現(xiàn)在進入了本地倉庫,但是2.txt未進行add 操作,因此本地倉庫里面其實沒有2.txt的記錄。 現(xiàn)在我們暫存并提交下2.txt: 復(fù)制 git add .
git commit -m '第一次提交2.txt'
Git 配置項信息命令 | 說明 |
---|
git config --add name value | 添加配置屬性 | git config --replace-all name value | 根據(jù)名稱替換掉所有的配置信息的值 | git config --get name | 根據(jù) name 獲取值 | git config --get-regexp name_regex | 根據(jù) name 正則獲取值 | git config --unset name | 根據(jù) name 刪除配置項 | git config --unset-all name | 刪除所有 name 的配置項 | git config --rename-section oldname newname | 重命名配置項 |
查看工作區(qū)與暫存區(qū)的狀態(tài)git status
將文件添加到暫存區(qū)命令 | 說明 |
---|
git add | 將新文件或者修改過的文件添加到暫存區(qū) | git add -u | 將修改的文件更新到暫存區(qū),新文件不會提交 |
在 Git 暫存區(qū)生成提交記錄命令 | 說明 |
---|
git commit -m'commit messages' | 在暫存區(qū)生成提交記錄 |
從倉庫拉取項目git pull
創(chuàng)建本地分支git checkout -b branchname
下載分支git fetch
查看分支git branch -av
刪除不需要的分支命令 | 說明 |
---|
git branch -d 分支名 | 會提示是否真的要刪除 | git branch -D 分支名 | 強制刪除 |
提交項目命令 | 說明 |
---|
git push origin master | 將項目提交到倉庫 | git push origin master --tags tags | 帶版本號提交 |
Git 重命名文件git mv oldname newname
刪除文件git rm
Git 查看日志命令 | 說明 |
---|
git log | 查看所有詳細(xì)版 默認(rèn)當(dāng)前分支 | git log --oneline | 所有簡介版 | git log -n4 | 查看前4個 | git log -n4 --oneline | 前4個簡介版 | git log --all | 所有分支 | git log --all --graph | 圖形化 |
修改最新 commit 的 messagegit commint --amend''
比較暫存區(qū)和 HEAD 所包含文件的差異git diff --cached
查看工作區(qū)和暫存區(qū)所包含的文件查看git diff -- <file>
暫存區(qū)恢復(fù)成和 HEAD 一樣git reset HEAD -- <file>
工作區(qū)的文件恢復(fù)成和暫存區(qū)一樣git chechout -- <file>
消除最近幾次的提交git reset -- hard
比較不同分支的指定文件差異git diff branch1 branch2 -- <file>
多人開發(fā) Git 使用一git fetch 倉庫git merge 倉庫分支名git push
多人開發(fā) Git 使用二git pull 修改沖突的地方git commit
Git的常用命令創(chuàng)建版本庫:git init 添加文件到緩存區(qū):git add 文件路徑 添加當(dāng)前工作區(qū)全部文件到緩存區(qū):git add . 添加到倉庫:git commit -m '情況說明' 從暫存區(qū)回退上個版本:git checkout -- file 刪除:git rm file 查看指定文件:git cat file 比對工作區(qū)與版本庫:git diff 查看日志:git log 操作歷史:git reflog 版本回退:git reset --hard commit-id/HEAD-id 創(chuàng)建并指向分支:git checkout -b <branch> 切換分支:git checkout <branch> 本地建立遠(yuǎn)程庫對應(yīng)分支:git checkout -b branch origin/branch 查看分支信息:git branch -a/v 刪除分支:git branch -d <branch> 檢測ssh連接:ssh -T git@github.com 添加遠(yuǎn)程版本庫:git remote add origin git@github.com:路徑/版本庫.git 克隆遠(yuǎn)程分支庫:git clone 遠(yuǎn)程倉庫路徑 克隆指定分支:git clone -b 分支名 遠(yuǎn)程倉庫路徑 從遠(yuǎn)程庫拉取最新提交:git pull 關(guān)聯(lián)并推送本地版本庫到遠(yuǎn)程庫:git push -u origin master 查看遠(yuǎn)程倉庫狀態(tài):git remote show origin 更新遠(yuǎn)程信息:git remote update

|