Git 常用的幾個功能

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

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

集中式 VS 分佈式

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

之前也一直在使用 Git ,但是使用的基本都是備份的功能,使用的也是一些個人開發(非團隊協作)常見的命令,如:

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

當然如果只是個人使用,知道以上命令就可以使用好 Git 了。

在大型項目中肯定會有多人協作的情況,所以我們需要了解 Git 在多人協作時的一些操作。

在多人協作中經常遇到的問題就是多個人修改同一個文件的衝突,解決辦法就是先處理衝突,看是要保留我們的修改還是保留其他人的修改,或者是合併二者的修改。

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

  • 修復 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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章