Git
說明
- 分布式版本控制系統(tǒng)
- 只能跟蹤文本文件的改動
- 使用標準的UTF-8編碼
- Notepad++暇赤,默認編碼設置為UTF-8 without BOM
Git安裝
-Git安裝成功后笨篷,還需要設置惭等,在命令行輸入:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
創(chuàng)建版本庫(倉庫)
-
mkdir
路徑及名稱
$ mkdir D:/Mygit
$ cd D:/Mygit
$ pwd
pwd
命令用于顯示當前目錄。
Windows系統(tǒng)下蜗搔,確保目錄名(包括父目錄)不包含中文壳贪。
- 通過
git init
命令將目錄變成Git可以管理的倉庫:
$ git init
- 把文件添加到版本庫
編寫一個readme.txt
的文件氢妈,內(nèi)容如下:
Git is a version control system
Git is free software
編寫方式
$ vi readme.txt
退出vi編寫:esc + :+ wq
- 第一步:用
git add
將文件添加到倉庫
$ git add readme.txt
- 第二步:用
git commit
將文件提交到倉庫
$ git commit -m "wrote a readme file"
-m
后面輸入的是本次提交的說明
commit
可以一次提交多個文件眼坏,所以可以多次add不同的文件
$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files"
修改添加的文件
完成添加和提交readme.txt
文件菇肃,修改操作如下:
$ vi readme.txt
# 修改內(nèi)容
Git is a distributed version control system.
Git is free software.
運行git status
查看結果
上述提示信息為
readme.txt
文件已經(jīng)被修改地粪,但是還未提交更改運行
git diff
查看被修改的內(nèi)容確定修改結果后,按照相同步驟提交
$ git status
# 運行git status再次查看當前倉庫的狀態(tài)
git status
將要提交被修改的readme.txt文件
# 提交
git commit -m "add distributed"
修改結束
版本回退
再次修改readme.txt
文件并提交修改
- 修改內(nèi)容如下
Git is a distributed version control system.
Git is free software distributed under the GPL.
commit
的作用就是將文件修改到一定程度以后保存修改的文件琐谤,并且不會改變以前的版本蟆技,一旦文件改亂或者誤刪了某個文件,可以從最近的commit恢復,然后繼續(xù)修改
- 用
git log
命令查看歷史記錄
git log
git log
命令顯示從最近到最遠的提交日志 - 用
git log --pretty=oneline
使提示信息的輸出更為簡潔明了
-
開始回退到指定版本
Git中质礼,用HEAD
表示當前版本(最新提交的文件)旺聚,上一個版本HEAD^
,第50個版本HEAD~50
- 用
git reset
回溯到指定版本
$ git reset --hard HEAD^^
HEAD is now at wrote a readme file
用cat readme.txt
查看當前版本內(nèi)容
- 指定回到未來的某個版本
git reset --hard 版本號
-
用
git reflog
查看所操作的每一次命令
-
HEAD
指向的版本就是當前版本,因此眶蕉,Git允許我們在版本的歷史之間穿梭砰粹,使用git reset --hard commit_id
- 用
git log
可以查看提交歷史,以確定要回退到哪個版本 - 要重返新的版本(未來)造挽,用
git reflog
查看命令歷史碱璃,以便要確定回到(未來)哪個版本
工作區(qū)和暫存區(qū)
- Mygit就是工作區(qū)
-工作區(qū)隱藏的目錄.git
叫做Git的版本庫,版本庫里最重要的部分是stage(或者index)饭入,叫做暫存區(qū)嵌器,還包括第一個分支master
,以及指向master
的一個指針HEAD
谐丢。
需要提交的文件修改一律放到暫存區(qū)爽航,然后,可以一次性提交暫存區(qū)的所有修改
再次修改readme.txt
文檔:
Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
然后新增加License.txt
文件乾忱,用git status
查看當前狀態(tài)
readme.txt
被修改了讥珍;License.txt
從未被修改,狀態(tài)為Untracked
窄瘟。將兩個文件夾都
add
衷佃,查看狀態(tài)此刻暫存區(qū)如下圖所示:
執(zhí)行
git commit
一次性將暫存區(qū)的文件提交到分支master
提交結束,工作區(qū)clear
管理進行的修改
再次修改readme.txt
文件
Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes.
繼續(xù)修改
readme.txt
寞肖,然后提交查看狀態(tài)
此時,第二次修改未被提交衰腌,原因是第二次提交并未執(zhí)行
git add
新蟆,也就是說,第二次修改的文件依舊存儲在工作區(qū)右蕊,并未add
到暫存區(qū)(stage)用
git diff HEAD -- readme.txt
查看工作區(qū)版本和版本庫中的最新版本的區(qū)別:繼續(xù)執(zhí)行
git add
琼稻,把第二次修改提交,隨后git commit -m
撤銷修改
-
文件修改出錯
- 只是在工作區(qū)進行修改饶囚,并未執(zhí)行
git add
和git commit -m " "
命令
- 可以執(zhí)行
git checkout -- readme.txt
丟棄工作區(qū)的修改
- 工作區(qū)修改出錯帕翻,并且已經(jīng)
git add
到暫存區(qū)
但是并未執(zhí)行git commit
- 用命令
git reset HEAD readme.txt
可以把暫存區(qū)的修改撤銷掉(unstage),重新放回到工作區(qū):
-
丟棄工作區(qū)修改
刪除文件
-
添加新文件
- 執(zhí)行
rm
命令直接在文件管理器中刪除test.txt
文件
rm test.txt
此時執(zhí)行的操作有兩種:
- 確定要刪除版本庫中的文件,執(zhí)行命令
git rm
,然后git commit
此時版本庫中的文件已被刪除 - 文件誤刪(版本庫中存有)萝风,將誤刪的文件恢復到最新版本嘀掸,執(zhí)行
git checkout -- test.txt
.......未完待續(xù)