Git是目前世界上最先進(jìn)的分布式版本控制系統(tǒng)。github是全世界最大,、質(zhì)量最高的代碼托管平臺?,F(xiàn)如今在github上沒有自己維護(hù)的項目,都不好意思和別人聊天,。
裝*只是學(xué)習(xí)git的一個原因,,更重要的原因是我們要維護(hù)代碼的版本,并且希望網(wǎng)絡(luò)上有一份永久的存儲,,這樣我們可以將代碼回退到任意歷史版本,,可以和別人協(xié)作,在切換工作環(huán)境之后可以輕易獲得自己曾經(jīng)寫過的代碼,。 Git 是目前世界上最先進(jìn)的分布式版本控制系統(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 [email protected]
如果使用了 --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命令進(jìn)入自己想要創(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)一個二進(jìn)制文件,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)程倉庫來對代碼進(jì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)在進(jìn)入了本地倉庫,但是2.txt未進(jìn)行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
|