記錄git常用操作命令

0、寫在前面

作爲一名開發者,熟悉使用 git 代碼管理工具是一項必備的基本技能。git 相較 SVN 而言,其優點不言而喻。git 的功能非常強大,其包括的操作命令也非常的多,但是從實用性而言,很多命令可能我們一輩子也用不到,這裏我只記錄一下自己經常使用的 git 命令,熟練使用了這些命令,其實已經可以完全得心應手的使用 git 工具了。我所使用的開發環境是在 CentOS6.5 系統,下邊的操作命令都是在 CentOS6.5 上進行實驗通過的。

一、GIT的初始化及配置

1.git安裝

  • yum方式安裝:
$ yum install git -y
  • apt方式安裝:
$ apt install git -y
  • 源碼方式安裝:
$ ./configure && make && make install

2.git全局配置

$ git config --global user.name "liwei0526vip"
$ git config --global user.email "[email protected]"

通過git config命令的--global參數設置了git的用戶名和用戶郵箱,默認情況下這臺機器上所有的git倉庫都會使用這個配置,當然也可以對某個倉庫指定具體不同的用戶名和用戶郵箱

3.初始化倉庫

倉庫,英文名repository。可以簡單理解成一個目錄,這個目錄裏面的所有文件都可以被git管理起來,每個文件的修改、刪除,git都能跟蹤,以便任何時刻都可以追蹤歷史,或者在將來某個時刻可以"還原"。

$ mkdir learngit
$ cd learngit
$ git init
Initialized empty Git repository in /root/learngit/.git/
$ ls -a
.  ..  .git

可以發現當前目錄下多了一個.git的目錄,這個目錄是git來跟蹤管理版本庫的,千萬不要手動修改這個目錄裏面的文件,否則就把git倉庫給破壞了

4.關於文件變動跟蹤

首先這裏再明確一下,所有的版本控制系統,其實只能跟蹤文本文件的改動,比如 TXT 文件,網頁,所有的程序代碼等等, Git 也不例外。版本控制系統可以告訴你每次的改動,比如在第5行加了一個單詞 "Linux" ,在第8行刪了一個單詞"Windows"。而圖片、視頻這些二進制文件,雖然也能由版本控制系統管理,但沒法跟蹤文件的變化,只能把二進制文件每次改動串起來,也就是隻知道圖片從100KB改成了120KB,但到底改了什麼,版本控制系統不知道,也沒法知道。

5.關於編碼

因爲文本是有編碼的,如果沒有歷史遺留問題,強烈建議使用標準的UTF-8編碼,所有語言使用同一種編碼,既沒有衝突,又被所有平臺所支持。

二、代碼提交

1.查看repo狀態

$ git status

2.添加文件到緩存區

$ git add file1.txt
$ git add file2.txt

3.提交到版本庫

$ git commit -m "message"    # 一定要寫提交信息, 便於後續查看版本信息

三、管理修改

1.丟棄工作區的修改

$ git checkout -- file.txt

2.丟棄暫存區的修改

$ git reset HEAD file.txt    # 丟棄暫存區的修改, 完畢後工作區內容未撤銷

3.撤銷提交(版本回退)

$ git reset --hard HEAD^

4.管理修改的舉例

  • 場景1:當你改亂了工作區某個文件的內容,想直接丟棄工作區的修改時,用命令git checkout -- file。
  • 場景2:當你不但改亂了工作區某個文件的內容,還添加到了暫存區時,想丟棄修改,分兩步,第一步用命令git reset HEAD file,就回到了場景1,第二步按場景1操作。
  • 場景3:已經提交了不合適的修改到版本庫時,想要撤銷本次提交,參考版本回退一節,不過前提是沒有推送到遠程庫。

5.查看工作區與版本庫的差異

$ git diff HEAD -- file.txt

6.查看提交版本日誌

$ git log --pretty=oneline    # --pretty選項更清晰顯示

四、遠程庫操作

1.克隆遠程庫

$ git clone http://gitlab.staff.sina.com.cn/liwei42/gitver

2.添加遠程庫(給本地庫)

$ git remote add origin [email protected]:liwei42/gitver.git

3.推送遠程庫

$ git push -u origin master    # 第一次推送加'-u'選項, 關聯本地與origin的master分支

4.拉取遠程庫

$ git pull <遠程主機名> <遠程分支名>:<本地分支名>

在默認模式下,取回遠程主機某個分支的更新,再與本地的指定分支合併。git pull是git fetch後跟git merge的縮寫。

比如,要取回origin主機的next分支,與本地的master分支合併,需要寫成下面這樣:

$ git pull origin next:master    # 如果要與當前分支合併, 則冒號後面的部分可以省略

相當於:

$ git fetch origin
$ git merge origin/next

手動建立追蹤關係:

$ git branch --set-upstream master origin/next

上面命令指定master分支追蹤origin/next分支。如果當前分支與遠程分支存在追蹤關係,git pull就可以省略遠程分支名

$ git pull origin    # 如果當前分支只有一個追蹤分支,連遠程主機名都可以省略

五、分支管理

1.創建分支

$ git branch b1

2.切換分支

$ git checkout b1    # 切換到b1分支
$ git checkout -b b2 # 創建並切換到b2分支

3.合併分支

$ git merge dev           # 合併dev分支到當前分支
$ git merge dev master    # 合併dev分支到master分支(可能當前分支並沒有在master上)
$ git --no-ff merge dev   # 合併時不使用ff方式, 這樣會在合併分支上保留提交的版本信息

六、分支策略

1.主分支master

代碼庫應該有一個、且僅有一個主分支。所有提供給用戶使用的正式版本,都在這個主分支上發佈。

2.開發分支develop

主分支只用來分佈重大版本,日常開發應該在另一條分支上完成。這個分支可以用來生成代碼的最新隔夜版本(nightly)。如果想正式對外發布,就在Master分支上,對Develop分支進行"合併"

3.臨時性分支

  • 功能(feature)分支
  • 預發佈(release)分支
  • 修補bug(fixbug)分支

4.功能分支

它是爲了開發某種特定功能,從Develop分支上面分出來的。開發完成後,要再併入Develop。

5.預發佈分支

它是指發佈正式版本之前(即合併到Master分支之前),我們可能需要有一個預發佈的版本進行測試。預發佈分支是從Develop分支上面分出來的,預發佈結束以後,必須合併進Develop和Master分支。它的命名,可以採用release-*的形式。

6.修補bug分支

軟件正式發佈以後,難免會出現bug。這時就需要創建一個分支,進行bug修補。修補bug分支是從Master分支上面分出來的。修補結束以後,再合併進Master和Develop分支。它的命名,可以採用fixbug-*的形式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章