Git 經常使用的幾個功能

Git是目前世界上最早進的分佈式版本控制系統,這裏有兩個名詞:分佈式、版本控制。git

牆裂推薦 廖雪峯的 Git 教程。這篇文章也算是看了 廖老師的教程後寫的一點筆記。web

集中式 VS 分佈式app

版本控制:顧名思義,就是經過各個版本的內容來對文件進行管理,能夠經過查看各個版本能夠知道修改人和修改時間。分佈式

以前也一直在使用 Git ,可是使用的基本都是備份的功能,使用的也是一些我的開發(非團隊協做)常見的命令,如:svg

git init
git add .
git commit -m "xxx"
git push
git pull
git status
git checkout -b dev
git diff

固然若是隻是我的使用,知道以上命令就能夠使用好 Git 了。測試

在大型項目中確定會有多人協做的狀況,因此咱們須要瞭解 Git 在多人協做時的一些操做。url

在多人協做中常常遇到的問題就是多我的修改同一個文件的衝突,解決辦法就是先處理衝突,看是要保留咱們的修改仍是保留其餘人的修改,或者是合併兩者的修改。spa

在開發中常見的場景還有:.net

  • 修復 Bug
  • 添加新功能
  • 打 Tag
  • 版本回退
  • 撤銷修改
  • 刪除文件

在開始介紹以上幾個功能的命令以前先了解一下 Git 中 工做區和暫緩區 的概念。版本控制

暫緩區:git add <file> 這個命令是將文件添加到 暫緩區,git commit -m "xxx" 這是將暫緩區的內容提交到分支。

工做區:就是咱們在實時編輯的文件,在 git commit -m "xxx"以後沒作任何修改,那麼工做區就是乾淨的。

修復 Bug

在開發中常常還在寫代碼,忽然測試跟你說有 Bug 了須要緊急修改,那麼這時候須要用上 Git 的 修復 Bug 的版本控制了。

  1. 保存當前的修改。 git stash
  2. 首先肯定出現 Bug 的分支,從那個分支建立出一個修復 Bug 的分支。切換分子:git checkout 分支名,建立 Bug 分支:git checkout -b issue-101
  3. 在 Bug 分支上修復問題,合併分支,刪除 Bug 分支。修復問題並提交:git add <file> , git commit -m "xxx", 切回到出 Bug 的分支:git checkout 分支名,合併分支:git merge --no-ff -m "merged bug fix 101" issue-101
  4. 回到保存代碼的分支上繼續擼碼。git checkout 保存代碼的分支,查看保存的列表:git stash list,取出保存的代碼:git stash pop, 取出某個保存的代碼:git stash apply stash@{id}

添加新功能

和修復 Bug 分支操做相似

  1. 保存當前的修改
  2. 找到要添加新功能的分支版本,建立出一個 feature 分支。
  3. 完成新功能,合併分支,刪除分支。若是在合併以前想放棄新功能能夠使用:git branch -D feature-vulcan 強行刪除分支
  4. 回到保存代碼的分支上繼續擼碼。

打 Tag

tag就是一個讓人容易記住的有意義的名字,它跟某個commit綁在一塊兒。例如版本發佈時須要指定某個時刻提交的版本進行打包,須要根據 commit id去查找,一大串的英文數字中找到一串commit id看着不是很爽,因此咱們在commit 的時候加上 tag 名字後,須要打包某一個時刻提交的版本,直接搜索tag名稱便可找到 commit id,最後經過commit id打包。

  • 命令git tag <tagname>用於新建一個標籤,默認爲HEAD,也能夠指定一個commit id
  • 命令git tag -a <tagname> -m "blablabla..."能夠指定標籤信息;
  • 命令git tag能夠查看全部標籤。
  • 命令git show <tagname>能夠看到說明文字

版本回退

顧名思義就是撤銷修改的意思,就像吃了後悔藥的那種效果。前提是沒有提交到遠程倉庫

  • 回退上一個版本。git reset --hard HEAD^
  • 回退上上一個版本。git reset --hard HEAD^^
  • 回退到某個版本。git reset --hard <填寫 commitId 前幾位便可>

回退到某個版本須要 commit id,能夠經過 git log命令查看具體的commit id,若是嫌棄git log打印的內容太雜,能夠使用 git log --pretty=oneline查看 commit id

若是已經回退後的版本又想恢復,可是找不到commit id,能夠經過git reflog來查找commit id,它的做用是用來記錄你的每一次命令。

撤銷修改

若是還未添加到暫緩區,也就是所作的修改尚未作git add操做
能夠使用命令git checkout -- file能夠丟棄工做區的修改。

若是已經添加到暫緩區可是還沒提交,也就是作了git add可是還沒作git commit -m "xxx",能夠使用命令git reset HEAD <file>將暫存區的修改撤銷掉(unstage),從新放回工做區

刪除文件

包含真的要刪除文件以及誤刪文件。

真的要刪除文件

git rm <file>
git commit -m "remove file"

誤刪文件,想要恢復(和撤銷修改相似)

git checkout -- file

本文同步分享在 博客「_龍衣」(CSDN)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索