版本管理GIT

描述:查看GIT版本分支,回溯代碼

基本命令回顧:

git init

git add file   //該命令可以將文件添加進跟蹤文件,也可以將修改的跟蹤文件放進暫存區

git status

git commit -m "提交說明"


初始化乾淨倉庫:

project目錄下初始h化倉庫並提交後

git clone --bare ./project  new.git


首次推送服務器:

採用SSH協議

scp -r new.git [email protected]:/my/git/new.git


修改提交:


通常修改一個文件後:

git add file

git commit -m 這樣進行提交

git commit -a 更新並提交


修改最後一次提交:功能,本次提交漏掉文件,或提交信息錯誤需要重新提交時

git commit -m

git add new_file

git commit --amend  

//合併爲一次提交


標籤:標籤是當前commit的對象指針

查看標籤:

git tag


新建標籤:

git tag -a tag -m 'information'

補打標籤:爲以前提交的快照補上標籤

git tag v1.0 xxxxxxx(哈希值)


標籤是本地化操作,所以要推上服務器需要:

git push origin V1.0

推送所有標籤(增補標籤):

git push origin --tags


推送標籤等同於推送指向的commit對象。



查看提交日誌:

git log

git log -p 2


比較文件與暫存文件區別

git diff file


遠端倉庫操作:


克隆源碼:

git clone  root@192.../../../new.git //當前目錄 名字默認爲new


顯示遠程倉庫:

git remote -v


添加遠程倉庫:

git remote add name git://

git remote add name root@192...

//name爲新的遠程倉庫名,和origin一樣


推送服務器:

git push origin master


拉取數據:

git fetch name

//會抓取上次克隆或fetch以來,所有更新的數據

//拉取到本地爲一個新的分支,需要手動合併


拉取數據併合並:

git pull name

//會自動合併到當前分支,在只有一個分支的情況直接直接拉取即可

//若是多分支,還要設定本地分支跟蹤遠端具體哪個分支,才能實現合併。

//git clone 的本質就是初始化一個本地master分支並跟蹤遠程master分支。


分支操作:


創建分支:

git branch is01


切換分支:

git checkout is01  

git checkout -b is01//創建並切換


分支合併:

git checkout master

git merge is01 //將01合併到嗎master


跟蹤分支:

首次從遠端拉取新分支後,在本地也不能操作該分支,比如拉取的遠程分支爲origin/fix

本地只能有兩個選擇:

1.合併到本地當前分支

git merge origin origin/fix

2.創建一個新的分支fix,在剛拉取的分支基礎上

git checkout -b new_fix origin/fix

git checkout --track origin/fix



版本回溯:

本地回溯到上一版本:即git commit 之前

git reset --soft HEAD^   //HEAD是當前commit對象,^表示其父對象


回溯到暫存文件之前:即git add之前

git reset -q file

此時回到了修改未暫存階段


回溯到上一版本,並且添加的文件不保存

git reset --hard

注意這個是硬回溯,當前改動的代碼是不會保存的。


回到更以前的版本

git reset --soft HEAD^^

git reset --soft SHA值

 

git branch and merge.

分支:

在GIT初始化倉庫時,創建的分支爲master,在初此提交時

會創建一個committer指針,指向當前提交對象的文件快照,以哈希值來區分

當再次提交時,提交的對象會包含一個指向上次提交對象的指針(parent).

所謂分支就是指向commit對象的可變指針,每次提交後,都指向最後一次提交的

commit對象。

分支的創建:

:git branch name...

這會在當前commit上新建一個分支,與主分支master一樣指向同一個commit對象,

這裏需要一個HEAD指針,來區別當前工作的分支,HEAD指向當前工作的分支,

切換分支:

:git checkout name...


如果在新的分支進行了提交,此時的分支指向新的commit,而原來的master指向爲提交前的

commit。故回到主分支時,git checkout master.文件內容回到了master所指向的快照

內容,此時又可以在此基礎上開發另外的內容。


當回到master分支後,代碼推進了又再次提交,此時等若產生了新的分支。

此時的master和name...分支是一種平行關係,父commit都來自未創建分支的快照對象。


合併:

在新的分支提交以後,確保代碼穩定後,需要合併到主分支

:git checkout master  

切換回主分支

由於新的分支的父對象是master。即name 分支是master分支的下游,此時合併

:git merge name ... 

這部稱fast forward,只是簡單的將master分支向前推進。指向了新分支的commit.

這是因爲沒有什麼分歧。現在可以刪除新的分支

:git branch -d name...


合併提交:

祖先不止一個的情況,以三方合併計算做合併策略


衝突合併解決:

在不同的分支修改了統一文件的同一部分。

分支管理:

git branch  //所有分支

git branch -v //各個分支最後一次commit信息

git branch --merge/--no-merge  //已經合併的分支/相反。


分支未合併會失敗,當然也可以強制刪除-

 

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