前置知識:
Github : Git項(xiàng)目托管網(wǎng)站, 部分情景擁有免費(fèi)私倉弹砚。
碼云 : Git/SVN項(xiàng)目托管網(wǎng)站, 擁有免費(fèi)私倉争涌。
Git : 分布式版本版本控制工具望门。
GitLab : 開源免費(fèi)可自行搭建的代碼托管平臺菇晃。
圖片.png
創(chuàng)建倉庫并與遠(yuǎn)程倉庫綁定, 取消綁定
注意:
- 創(chuàng)建生成.git文件蕉毯,該目錄下為工作區(qū), 工作區(qū)自動檢測除.gitignore中標(biāo)注外的文件的改動。
- git只識別目錄符:/
$ git init 創(chuàng)建成功并生成.git文件
//如果你是第一次提交項(xiàng)目到一個新的倉庫西雀,這一句非常重要萨驶,這是你本地的當(dāng)前的項(xiàng)目與遠(yuǎn)程的哪個倉庫建立連接。
//建立遠(yuǎn)程倉庫連接1
$ git remote add origin git@+ 項(xiàng)目ssh連接
//建立遠(yuǎn)程倉庫連接2
//github
$ git remote add origin git@github.com:用戶名/遠(yuǎn)程倉庫名(url).git
//碼云
$ git remote add origin git@gitee.com:用戶名/遠(yuǎn)程倉庫名(url).git
//取消本地目錄下關(guān)聯(lián)的遠(yuǎn)程庫:
$ git remote rm origin
//查看你當(dāng)前項(xiàng)目遠(yuǎn)程連接的是哪個倉庫地址艇肴。
$ git remote -v
進(jìn)行倉庫版本提交
注意:
- 由于遠(yuǎn)程庫是空的腔呜,我們第一次推送master分支時叁温,加上了-u參數(shù),Git不但會把本地的master分支內(nèi)容推送的遠(yuǎn)程新的master分支核畴,還會把本地的master分支和遠(yuǎn)程的master分支關(guān)聯(lián)起來膝但,在以后的推送或者拉取時就可以簡化命令(去掉u)。
//查看當(dāng)前項(xiàng)目下所有文的狀態(tài)谤草,如果第一次跟束,你會發(fā)現(xiàn)都紅顏色的,因?yàn)樗€沒有交給git
$ git status
//(.)點(diǎn)表示當(dāng)前目錄下的所有內(nèi)容丑孩,交給git管理(添加到暫存區(qū))冀宴,也就是提交到了git的本地倉庫,在add
$ git add . 后加文件名也可只添加一個文件(加入暫存區(qū))温学。
//add后可以回退文件略贮,將文件從暫存區(qū)回退到工作區(qū)
$ git reset HEAD filename :
//使用(.)點(diǎn)提交后, 多人合作時記得刪除個人的屏蔽文件
$ git rm .gitignore
//對你更新或修改了哪些內(nèi)容做一個描述,提交到版本。
$ git commit –m ”new matter ”
//推送:
//第一次推送遠(yuǎn)程倉庫 加 -u
//-u表示當(dāng)前分支推送信息初始化, 第二次開始你就可以用git push推送到對應(yīng)分支了
$ git push -u origin master
$ git push
//如果推送由于版本錯誤一直失敗 加-f , 強(qiáng)行讓本地分支覆蓋遠(yuǎn)程分支
//使用于不同.git對差異過大的文件不兼容
git push origin master -f
管理代碼版本
那么在平日的使用中怎么進(jìn)行代碼管理呢:
版本信息查看:
//命令可以讓我們時刻掌握倉庫當(dāng)前的狀態(tài)仗岖,告訴我們逃延,哪些被修改過了,但還沒有提交,甚至可以查看哪些合并沖突了轧拄。
$ git status
//顧名思義就是查看difference揽祥,可以從上面的命令輸出看到,我們上次具體做了什么修改
$ git diff <file>
//命令顯示從最近到最遠(yuǎn)的提交日志(版本號也會顯示出來)紧帕,如果嫌輸出信息太多盔然,看得眼花繚亂的桅打,可以試試加上--pretty=oneline參數(shù).
$ git log
進(jìn)行版本回退:
//查看當(dāng)前文件狀態(tài)確認(rèn)版本號
$ git log
//徹底回退到某個版本是嗜,本地的源碼也會變?yōu)樯弦粋€版本的內(nèi)容,此命令 慎用挺尾!
HEAD 回退到最近一個版本
HEAD^ 代表當(dāng)前版本上一個的版本號
$ git reset --hard HEAD
//回退到某個版本鹅搪,只回退了commit的信息,不會恢復(fù)到index file一級遭铺。如果還要提交丽柿,直接commit即可
$git reset --soft:
進(jìn)行版本恢復(fù):
//查看當(dāng)前工作區(qū)的所有歷史版本提交信息及版本號
$ git reflog
//版本號沒必要寫全,前幾位就可以了魂挂,Git會自動去找甫题。
$ git reset --hard 【版本號】
//查看當(dāng)前文件狀態(tài)確認(rèn)版本
$ git log
分支合并管理
分支合并: 例如, 將本地開發(fā)分支dev合并 到master,并同步更新遠(yuǎn)程:
//在 主分支下合并
$git branch 查看分支
$git merge dev 把dev的最新更改合并到當(dāng)前分支下
$git checkout master
$git pull origin master //拉取并更新
$ git push
分支創(chuàng)建:
//引入github已有分支
$ git pull origin 遠(yuǎn)程分支名
//切換
git checkout 分支名
//創(chuàng)建新分支并切換到新分支下
$ git checkout -b 分支名
從遠(yuǎn)程庫拉取代碼
注意:
拉取代碼時,請先commit自己有用的更改, 先 commit 再 pull,如果不想更新時有2個版本信息,也可以git stash先創(chuàng)建鏡像(不用commit)
拉取準(zhǔn)備:git stash使用場景
git stash 會把所有未提交的修改(包括暫存的和非暫存的)都保存起來,用于后續(xù)恢復(fù)當(dāng)前工作目錄涂召。
如果我們不想提交完成一半或者不完善的代碼坠非,但是卻不得不去修改一個緊急Bug,那么使用git stash就可以將你當(dāng)前未提交到本地(和服務(wù)器)的代碼推入到Git的棧中果正,這時候你的工作區(qū)間和上一次提交的內(nèi)容是完全一樣的炎码,所以你可以放心的修Bug盟迟,等到修完Bug,提交到服務(wù)器上后潦闲,再使用git stash apply將以前一半的工作應(yīng)用回來攒菠。
比如下面的中間狀態(tài),通過git stash命令推送一個新的儲藏歉闰,當(dāng)前的工作目錄就干凈了辖众。
$ git stash list 可以看到保存的信息:
$ git stash pop stash@{id} 還原某個id的鏡像并合并剛剛pull的部分,并移除原先stash
$git stash drop <stash@{id}>刪除
"pull"命令把"origin"分支上的修改拉下來并且和你的修改合并; 結(jié)果看起來就像一個新的"合并的提交"
$ git clone git@+項(xiàng)目ssh鏈接
fetch 以及pull
假如本地已經(jīng)存在了這個項(xiàng)目新娜,而倉庫中又有一新的更新赵辕,如何把更的合并到本地的項(xiàng)目中?
$ git fetch origin //取得遠(yuǎn)程更新概龄,這里可以看做是準(zhǔn)備要取了
$ git merge origin/master //把更新的內(nèi)容合并到本地分支/master
多人合作加入時,由于本地版本沒有版本信息, 并且不一定一致,如何更新至于遠(yuǎn)程同一狀態(tài), 使用忽視歷史版本信息的拉取命令:
$ git pull origin master --allow-unrelated-histories