5 分鐘學會 Git 常見用法和核心策略 (轉載)

Bgods發表於2019-11-19

版本庫又名倉庫,英文名repository,你可以簡單理解成一個目錄,這個目錄裡面的所有檔案都可以被Git管理起來,每個檔案的修改、刪除,Git都能跟蹤,以便任何時刻都可以追蹤歷史,或者在將來某個時刻可以“還原”。

課外知識: mkdir 建立目錄; pwd 顯示絕對路徑; cat 檔名 檢視檔案內容
注:所有的版本控制系統,其實只能跟蹤文字檔案的改動,比如TXT檔案,網頁,所有的程式程式碼等等,Git也不例外。而圖片、影片這些二進位制檔案,雖然也能由版本控制系統管理,但沒法跟蹤檔案的變化,只能把二進位制檔案每次改動串起來,也就是隻知道圖片從100KB改成了120KB,但到底改了啥,版本控制系統不知道,也沒法知道。

Microsoft的Word格式是二進位制格式,因此,版本控制系統是沒法跟蹤Word檔案的改動的,如果要真要使用版本控制系統,就要以純文字方式編寫檔案。
千萬不要使用Windows自帶的記事本編輯任何文字檔案,原因是Microsoft開發記事本的團隊,在每個檔案開頭新增了0xefbbbf(十六進位制)的字元,你會遇到很多不可思議的問題.

1.核心操作

# 1.初始化倉庫,.git目錄預設隱藏,可以透過命令ls -ah顯示
git init

# 2.把檔案新增到版本庫,可以一次新增多個檔案,git add . 代表把所有檔案全部提交
git add 檔名 檔名

# 3.把檔案提交到當前分支
git commit -m '本次提交的說明'

# 4.把專案提交到(遠端)倉儲
git push

2.分支管理

# 1.檢視遠端分支
git branch -a

# 2.檢視本地分支
git branch

# 3.建立並切換分支 (加-b表示建立並切換)
git checkout -b 分支名

# 4.切換回分支
git checkout 分支名

# 5.從主分支裡建立新分支
git checkout master -b 新分支名

# 6.合併某分支到當前分支
git merge 分支名

# 7.刪除分支
git branch -d 分支名
git branch -D 分支名 (強行刪除分支)

3.解決衝突

# 情景一 提交或拉取時衝突
git stash
git pull
git stash pop

# 情景二 如果你想完全地覆蓋本地的程式碼,只保留伺服器端程式碼,則直接回退到上一個版本,再進行pull
git reset --hard HEAD^
git pull origin master
# 注:origin master表示git的主分支

# 情景三 分支合併時衝突(當我們git merge 分支名 時)
1.git status (檢視發生衝突的文)
2.然後手動合併衝突
3.git add .  (新增更改後的檔案)
4.git commit -m 'xj' (提交)

4.檢視ssh金鑰

# 1.進入.ssh目錄
cd ~/.ssh
# 2.檢視id_rsa.pub檔案
cat id_rsa.pub

5.克隆遠端專案

git clone 遠端源地址

6.回退某個操作

# 1.檢視命令歷史
git reflog
# 2.根據commitID撤銷某個操作
git reset --hard 某個commitId

7.和遠端分支建立關聯

git branch --set-upstream-to=origin/遠端分支的名字 本地分支名

8.刪除檔案

# 刪除版本庫中的檔案
git rm filename
# 恢復工作區中誤刪的檔案
git checkout -- filename
# 注:git checkout其實是用版本庫裡的版本替換工作區的版本,無論工作區是修改還是刪除,都可以“一鍵還原”。

9.遠端倉儲

# 1.建立sshkey金鑰
ssh-keygen -t rsa -C "youremail@example.com"
# 2.在遠端倉庫中新增ssh公鑰
# 3.關聯遠端庫
git remote add origin git@server-name:path/repo-name.git
# 4.第一次推送master分支的所有內容,此後只需要使用git push origin master即可推送最新修改
git push -u origin master

10.多人協作

# 1.檢視遠端倉儲的詳細資訊
git remote -v
# 2.推送本地分支到遠端倉庫,
  #1.如果發生衝突,用git pull試圖合併,如果發生衝突則解決衝突,再進行推送
  #2.如果git pull後提示no tracking information(沒有追蹤資訊),則進行第四項,建立關聯,之後pull,有衝突再合併
git push origin 本地分支名
# 3.在本地建立和遠端分支對應的分支
git checkout -b 本地分支 origin/遠端分支名
# 4.建立本地分支和遠端分支的關聯
git branch --set-upstream 本地分支名 origin/遠端分支名

11.分支策略

1.master分支應該是非常穩定的,也就是僅用來發布新版本,平時不能在上面幹活;
2.幹活都在dev分支上,也就是說,dev分支是不穩定的,到某個時候,比如1.0版本釋出時,再把dev分支合併到master上,在master分支釋出1.0版本;
3.每個人都有自己的分支,時不時地往dev分支上合併就可以了

補充

# git fetch和git pull的區別
與git pull相比git fetch相當於是從遠端獲取最新版本到本地,但不會自動merge。如果需要有選擇的合併git fetch是更好的選擇。效果相同時git pull將更為快捷。

# 檢視倉庫當前的狀態
git status

// 檢視提交日誌
git log

# 回退版本,在git中用HEAD表示當前版本,HEAD^表示上一個版本,HEAD^^表示上上個版本
git reset --hard HEAD^ 或
git reset --hard 3628164 (數字代表log裡commit後面的id,只需要填前幾位就可以)

# 視窗關閉後回退版本(git reflog用來記錄你的每一次命令)
git reflog

# 工作區和暫存區
工作區就是你建立的能看見的目錄,.git即為git的版本庫,Git的版本庫裡存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區,Git為我們自動建立的第一個分支master,以及指向master的一個指標叫HEAD。
用git add把檔案新增進去,實際上就是把檔案修改新增到暫存區;
用git commit提交更改,實際上就是把暫存區的所有內容提交到當前分支

# 撤銷修改
1.直接丟棄工作區的修改,用命令git checkout -- file
2.修改新增到了暫存區,想丟棄修改,分兩步,第一步用命令git reset HEAD file,就回到了場景1,第二步按場景1操作

最後,歡迎歡迎大家關注 趣談前端一起探討前端的魅力。

作者:徐小夕
連結:http://www.imooc.com/article/295318
來源:慕課網

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章