天天看點

git版本控制管理

簡介:Git 是一個開源的分布式版本控制系統,用于靈活高效地處理任何或小或大的項目

工作流程圖:

git版本控制管理

git的工作區:

工作區:就是你在電腦裡能看到的目錄(本地倉庫、即項目目錄)

暫存區:英文叫stage, 或index。一般存放在 “.git目錄下” 下的index檔案(.git/index)中,是以我們把暫存區有時也叫作索引(index)。

版本庫:工作區有一個隐藏目錄.git,是Git的版本庫。

一、git config指令

因為Git是分布式版本控制系統,是以,每個機器都必須自報家門:你的名字和Email位址。注意

git config

指令的–global參數,用了這個參數,表示你這台機器上所有的Git倉庫都會使用這個配置,當然也可以對某個倉庫指定不同的使用者名和Email位址,使用者名和郵箱都會存到使用者主目錄下的“.gitconfig”檔案中

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

二、初始化版本倉庫

進去到你的項目目錄下,右鍵點選運作Git Bash Here,該視窗下運作

git init

,指定目前目錄為git本地倉庫

git版本控制管理

三、送出檔案

将要送出到倉庫的檔案使用

git add

指令可将該檔案添加到緩存,執行

git commit

将緩存區内容添加到倉庫中。

送出到緩存中:

git add

送出到版本倉庫,-m參數表示送出的資訊:

git commit -m "第一次送出"

檢視狀态:

git status

五一休假回來上班,已經記不清上次怎麼修改的readme.txt,需要用git diff這個指令看看:

git diff readme.txt

四、版本復原

檢視送出曆史:

git log --pretty=oneline、git reflog

退回到上一個版本:

git reset --head HEAD^

退回到某一個版本:

git reset --head 版本id

五、撤銷修改

讓這個檔案回到最近一次git commit或git add時的狀态:

git checkout -- readme.md

注意:git checkout – file指令中的–很重要,沒有–,就變成了“切換到另一個分支”的指令

把暫存區的修改撤銷掉重新放回工作區:

git reset HEAD readme.md

是删錯了從版本庫裡誤删的檔案恢複到最新版本:

git checkout -- test.txt

六、遠端倉庫

建立SSH Key,裡面有id_rsa和id_rsa.pub兩個檔案,id_rsa是密鑰,id_rsa.pub是公鑰,在遠端倉庫中用公鑰就行

SSH Key:

ssh-keygen -t rsa -C "郵箱位址"

Linux:生成的.ssh檔案,root使用者在/root目錄下,普通使用者在/home

windows:生成的.ssh檔案,在使用者目錄下

已有的本地倉庫與遠端倉庫關聯:

git remote add origin 遠端倉庫的ssh連結

送出遠端倉庫(master是分支名):

git push origin master

七、git clone克隆遠端倉庫

在某個檔案夾下,執行

git clone 遠端倉庫位址

git版本控制管理

主要這裡隻能克隆主分支的遠端倉庫,如果想克隆其它分支的倉庫要執行另外一條指令,

git checkout -b dev origin/dev
           

git checkout -b dev 表示建立dev分支,origin/dev的dev表示是遠端倉庫中的分支名

八、分支管理(有個,并且顔色是綠色的是目前分支))*

檢視分支:

git branch

建立分支:

git branch 分支名

切換分支:

git checkout 分支名 或者 git switch 分支名

建立+切換分支:

git checkout -b 分支名

合并到某個分支到目前分支:

git merge 分支名

檢視分支合并圖:

git log --graph

删除分支:

git branch -d 分支名

九、Git分支管理及命名規範

git版本控制管理
分支 命名 說明
主分支 master 主分支,提供給使用者使用的正式版本,都在這個主分支上釋出
開發分支 dev 開發分支,永遠是功能最新最全的分支
功能分支 feature-* 新功能分支,某個功能點正在開發階段
修複分支 release-* 釋出定期要上線的功能
釋出版本 bug-* 修複線上代碼的 bug

将 Dev 分支釋出到 Master 分支的指令:

切換到 Master 分支:

git checkout master

對 Dev 分支進行合并:

git merge –no–ff dev

–no–ff參數是什麼意思

。預設情況下,Git執行”快進式合并”(fast-farward merge),會直接将 Master 分支指向 Dev 分支。

使用–no–ff參數後,會執行正常合并,在 Master 分支上生成一個新節點。