Git, 作為一款先進的版本控制工具湖苞,已經(jīng)越來越多被大家才采用片部。但是由于其學習成本不小拱烁,阻攔的不少人,這里推薦廖學峰老師的Git入門教程博客
本博客是對廖雪峰老師博客中的Git命令的簡版概述崩哩,便于日常使用查詢
一巡球、Git 入門
1.1 Git 安裝
從官網(wǎng)下載安裝Git,然后執(zhí)行下述命令看是否輸出版本信息邓嘹,驗證Git是否安裝成功辕漂,
git --version
1.2 Git 配置
配置用戶信息, 分別執(zhí)行下述命令吴超,設(shè)置您的全局用戶名和郵箱信息
git config --global user.name "Aaron Zhu"
git config --global user.email "tony@qq.com"
1.3 基本命令
- 查看當前目錄 Git 版本庫狀態(tài)
git status
- 查看各版本的 commit message 、 commit id
git log
- 查看操作Git 的命令歷史記錄. 版本回退后鸯乃, git log命令顯示的是當前版本之前的版本信息和commit id鲸阻,無法查看當前版本之后版本的commit message、commit id缨睡。故可以使用如下命令鸟悴,查看之后版本的commit id
git reflog
- 比較工作區(qū)中文件的修改變化
git diff a.java // 比較 a.java 文件的改動
二、版本庫基本操作
2.1 創(chuàng)建版本庫
在項目文件夾(無須為空文件夾)下奖年,執(zhí)行下述命令創(chuàng)建版本庫细诸,執(zhí)行成功后會在該目錄下創(chuàng)建一個.git的隱形文件夾
git init // 創(chuàng)建 Git 版本庫
2.2 添加新文件、文件修改
使用命令git add <file>將新文件陋守、文件修改 添加到暫存區(qū)Stage震贵, 注意,可反復(fù)多次使用水评,添加多個文件猩系、修改
git add main.c // 添加 當前目錄下的 main.c 文件
git add folder1/ // 添加 當前目錄下的 floder目錄中的所有文件(包含子目錄文件)
git add * // 添加 當前目錄下的 所有文件 (包含子目錄文件)
2.3 文件刪除
刪除文件操作,對于Git而言中燥,本質(zhì)上也是一種文件修改寇甸。所以在磁盤刪除文件后,可以使用git add命令添加刪除文件的修改到 Stage疗涉,同時Git也提供了下述命令用于添加 刪除操作的文件修改
git rm text.c // 添加 text.c 文件 刪除操作
2.4 提交
對于 Stage 中的新文件、文件修改,使用命令git commit -m <message>糖权,完成提交. Note: 版本的備注信息 message一般不建議省略企量,否則后期很難追溯
git commit -m "Frist Commit"
三、文件修改的撤銷
對于某些 文件修改偏窝,我們可能并不想收恢,甚至不能提交上去武学,那么該如何撤銷呢?
文件修改的撤銷伦意,有兩種場景:
- 工作區(qū)的文件修改火窒,即,欲撤銷的文件修改未 add到 暫存區(qū)Stage中
- 暫存區(qū)的文件修改驮肉,即熏矿,欲撤銷的文件修改已經(jīng)被 add到 暫存區(qū)Stage中
3.1 工作區(qū)中文件修改的撤銷
工作區(qū)中文件修改的撤銷 ,即离钝, 此修改發(fā)生在工作區(qū)中票编,但是未被添加到暫存區(qū)Stage中
對于工作區(qū)的未添加的文件修改, 可以使用下述命令進行撤銷卵渴。其撤銷結(jié)果有 2 種情況:
- 如果該 未添加的文件修改 是在 git add 后修改的慧域,即之前修改了若干次加入Stage后 ,然后又發(fā)生了修改浪读,則撤銷后昔榴,恢復(fù)為Stage中的版本
- 如果該 未添加的文件修改 過程中,從未添加到Stage中碘橘,則恢復(fù)為版本庫中的版本
即:該文件的撤銷結(jié)果互订,為最近一次 git add 或 git commit 的文件狀態(tài)。即痘拆,該狀態(tài)之后發(fā)生了任何未添加的修改都將被撤銷
git checkout -- filename.c // 丟棄 filename.c 文件 在 工作區(qū) 的修改
Note: 該用法中(工作區(qū)中文件修改的撤銷)仰禽,命令中的 -- 不可省略,否則意為 切換分支
3.2 暫存區(qū)中文件修改的撤銷
暫存區(qū)中文件修改的撤銷, 即纺蛆,文件修改吐葵,被意外的add到了暫存區(qū)
使用下述命令,將暫存區(qū)的文件修改犹撒,重新放回工作區(qū)折联,同時暫存區(qū)清空。執(zhí)行后可以看到识颊,文件狀態(tài)為被修改诚镰,且未被添加到暫存區(qū)。此時祥款,工作區(qū)中的文件修改清笨,你可以繼續(xù)編輯、添加刃跛、提交抠艾,也可以繼續(xù)撤銷,對于工作區(qū)中文件修改的撤銷桨昙,請參考上文
git reset HEAD main.js // 撤銷 暫存區(qū)中 main.js 文件件修改检号,重新放回工作區(qū)腌歉,清空暫存區(qū)
四、版本回滾
4.1 回退到之前
在Git中齐苛,用HEAD表示當前版本翘盖,也就是最新的提交版本。上一個版本就是HEAD^ 凹蜂,上上一個版本就是HEAD^^ 馍驯,以此類推……當然往上100個版本寫100個^比較容易數(shù)不過來,所以寫成HEAD~100
git reset 命令 回退到之前的版本
git reset --hard HEAD^ // 回退到上一個版本
git reset --hard HEAD^^ // 回退到上一個版本
git reset --hard xxxx // xxxx 為之前版本的commit id的前幾位
4.2 回退到之后
代碼回退到之前的版本后玛痊,如果想繼續(xù)回退到之后的版本汰瘫,則無法使用上文HEAD標識回退到未來的版本,但可以使用commit id的方法進行回退
git reset --hard commitId // 回退到之后的 commit id 版本
git reset --hard 1c23bc // 回退到 commit id 為 1c23bc ... xxxx 的版本擂煞;commit id 數(shù)字串較長混弥,一般取前6位即可區(qū)分,如果不夠对省,可以再多取幾位
- 如果git bash窗口未關(guān)閉剑逃,可以通過窗口記錄,找到并使用之后版本的 commit id進行回退
- 如果git bash窗口重新打開了官辽,也可以使用下述命令找到你 操作Git 的命令歷史記錄,從而找到之后版本的commit id
git reflog
五粟瞬、標簽
在Git中同仆,不同版本的代碼是以commit id作為版本號進行區(qū)分的,但是由于commit id是Git計算生成裙品,不便記憶俗批。故可在指定版本上添加上自定義標簽,便于使用(相當于給某個版本代碼市怎,取個易于記憶的別名岁忘,方便日后取用)。
5.1 添加標簽
- 可以使用如下命令給當前所在版本添加標簽
git tag tagName // 在當前版本添加標簽 tagName
git tag v1.0 // 在當前的版本区匠,添加標簽 v1.0
- 如果想給之前的某個版本添加標簽干像,無須回退到該版本,只需在上述命令后添加該版本的commit id即可
git tag tagName commitId // 在指定commit id的版本上添加標簽 tagName
git tag v0.8 3cbd33 // 向commit id為3cbd33的版本添加標簽 v0.8
- 像提交版本添加備注信息便于日后追溯一樣驰弄,在添加標簽時麻汰,同樣也可以添加關(guān)于該標簽的注釋信息
git tag -a tagName -m <message> // 在當前的版本上添加標簽 tagName,備注信息為message
git tag -a v1.1 -m "version 1.0 Final" // 在當前版本上添加標簽 v1.1戚篙,備注信息為version 1.0 Final
git tag -a tagName -m <message> commitId // 在指定commit id的版本上添加標簽 tagName五鲫,備注信息為message
git tag -a v0.3 -m "version 0.8 SNAPSHOT" 2caf9b // 在commit id為 2caf9b 的版本上添加標簽 v0.3 tagName,備注信息為version 0.8 SNAPSHOT
5.2 查看標簽
- 使用下述命令查看目前已經(jīng)添加的所有的標簽名
git tag // 顯示所有添加的標簽名
- 使用下述命令查看指定標簽版本的信息,包括commit id岔擂、時間 ...
git show tagname // 查看指定標簽名的版本信息
git show v0.8 // 查看標簽v0.8的版本信息