Git 學習

一、安裝Git

   windows 下面 從http://msysgit.github.io下載,默認安裝

   Conigure

   git config --global user.name"Your name"

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

   創建本地版本庫 Repository

       mkdir learningit

       cd learningit

       pwd //顯示你的目錄絕對地址

   初始化

       git init

二、Add file(files) into repository

   git add readme.txt

   Commit the file(files) to repository

   git commit -m "Wrote a readme file" //-m 支出本次提交說明

       初始化git倉庫 git init 命令

   添加文件到git倉庫

       git add 可以添加多個文件

       git commit 完成

三、時光穿梭機

   git status 命令掌握倉庫當前狀態

   git diff readme.txt 命令查看readme.txt文件有哪些內容修改了

   隨時掌握工作區狀態,git status

   如果git status命令告知文件修改過,使用git diff 查看具體修改內容

四、版本回退

   git log 命令能夠告訴我們歷史日誌

   git log --pretty=oneline --abbrve-commit 命令是的日誌信息簡化

   版本回退時Git 需要知道當前版本,Git使用HEAD表示當前版本,也就是最新提交,上一個版本爲

   HEAD^上上版本爲HEAD^^若一百個之前就是HEAD~100

   git reset --hard HEAD^ 是的版本回退到前一個版本

   使用 git reset --hard ID既可以將版本直接回到未來的某個版本

五、管理修改

   只要對文件進行了操作,即爲修改。

   ex

       Git管理的是修改,當使用“git add" 命令後,在工作區中的第一次修改被放入暫存區,但是在工作區中的第二次

   修改並未放入暫存區,即 第一次修改--git add --第二次修改--git commit。由此"git commit "只負責將暫存區中的修改提交,只提交了第一次,並未提交第二次修改。        

   必須按照如下過程  第一次修改--git add --第二次修改--add--git commit

   每次修改,如果不add到暫存區,就不會加入到commit中。

六、撤銷修改

   git checkout --readme.txt   適用於兩種情況:

   readme.txt 自修改後並未存放到暫存區

   readme.txt 已經添加到暫存區,又做了修改,現在撤銷修改就回到天驕到暫存區後的狀態。

   對於第二種情況,先使用命令 git reset HEAD readme.txt可以將暫存區的修改撤銷掉,重新放回工作區。然後使用g

   git checkout --file 來解決

   git reset命令可以回退版本,也可以將工作區總某些文件替換爲版本庫中的文件。

七、刪除文件

   git rm 刪除文件 並且commit

八、遠程倉庫

   註冊GitHub

   設置:

   ssh-keygen -t rsa -C "[email protected]"

   將生成的公鑰複製到github個人賬戶中。

九、添加遠程庫

   在GitHub網站進行操作

       1、Create a new repository

       2、complete some content

   將現有本地庫與之關聯

       git remote add origin [email protected]:tdppro/Learningit.git

       origin 爲遠程庫的地址,可以自行修改

       git push -u origin master

       將當前分支master推送到遠程

       由於遠程庫爲空,第一次推送master分支時,加上-u參數,Git不但會把本地的master

       的分支內容推送到遠程新的master分支,還會將本地的master分支和遠程master分支關聯起來。之後每次只需要使用git push origin master即可推送新的修改。

十、從遠程庫中克隆

       git clone [email protected]:tdppro/Learningit.git 即可

十一、創建與合併分支

   創建分支: git checkout -b Dev

   實際上是兩條命令集合:

   git branch Dev

   git checkout Dev

   git branch 查看當前分支

   在master分支下面使用:git merge Dev 命令將Dev合併到master分支上

   此時的合併爲"快進模式",Fast-forward

   git branch -d Dev  刪除分支

十二、解決衝突

   當不同分支修改同樣的內容之後,在合併是會產生衝突。

   在解決衝突後使用命令:

   git log --graph --pretty=oneline --abbrve-commit查看分支合併情況。

十三、分支管理策略

   合併分支時,Git會使用“Fast-forward"模式,此模式下,刪除分支後,會丟掉分支信息。

   如果強制禁用"Fast-forward"模式,Git會在merge時聲稱一個新的commit,這樣就可以從分支歷史上看到分支信息

   git merge --no-ff -m "merge with no-ff" dev 本次合併要創建一個新的commit,所以加上-m參數。

   使用git log --graph --pretty=oneline --abbrve-commit 命令查看分支歷史。

   實際開發中,我們應該按照幾個基本原則進行分支管理:

   master分支應該是非常穩定的,僅用來發布新版本,不能在上面幹活。

   幹活都必須在其他分支上面

十四、Bug分支

   每個bug都可以通過一個新的臨時分支來修復,修復後,合併分支,之後刪除臨時分支。

   在修復bug時,可以使用命令git stash將當前工作現場“儲藏”起來,等到恢復現場後繼續工作。

   修復bug時,首先需要確定要在哪個分支上修復bug,假定要在master分支上面進行修復,就從

master創建臨時分支:

   git checkout master

   git checkout -b issue-101

   修復之後

   git add readme.txt

   git commit -m "fix bug"

   轉換到master分支

   git checkout master

   git merge --no-ff -m "merged bug fix" issue-101

   回到原來分支後,需要恢復原來工作現場

   git stash list

   git stash pop //此命令恢復現場的同時也會將stash 內容刪掉

   可以有多個stash恢復時使用git stash list 查看 使用git stash apply stash@{0}恢復 0表示那個stash

十五、Feature分支

   添加新功能時,最好建立一個feature分支,在上面完成後,合併,最後刪除分支

example:

   git checkout -b feature-vulcan

   git add vulcan.py  //vulcan.py文件爲新功能

   git commit -m "add a new feature"

   切回dev 準備合併。。。。。還沒合併 ,此時需要將其刪除,銷燬....

   但是使用 git branch -d feature-vulcan時提示出錯,必須強行刪除:

   git branch -D feature-vulcan

   開發一個新feature,最好建立一個分支

   如果要丟棄一個沒有被合併過的分支,可以通過git branch -D name 強行刪除。

十六、多人合作

   git remote 查看遠程庫信息

   git remote -v 查看遠程庫詳細信息。

   推送分支:

       推送分支就是將該分支上的所有本地遞交推送到遠程庫,推送時要指定本地分支,這樣Git 就會將該分支

   推送到遠程庫對應的遠程分支上 git push origin master

   可以推送其他分支:  git push origin dev

   不是所有的本地分支有需要推送到遠程庫:

例如:

       master分支是主分支,需要時刻與遠程庫同步

       dev是開發分支,團隊成員需要在上面工作,需要同步

       bug分支只用於本地修復bug,無需推送到遠程.

       feature分支是否推送,取決於自己的合作。

抓取分支:

   當小夥伴從遠程庫中clone時,默認情況下,小夥伴只能看到本地的master分支。

   如果小夥伴要在dev分支上面進行開發,就必須創建遠程origin的dev分支到本地,於是利用命令創建本地dev分支

   :git checkout -b dev origin/dev

   現在可以在dev上繼續修改,然後將dev分支push到遠程:

   git commit -m "add /usr/bin/env"

   git push orig dev

   如果小夥伴已經向origin/dev分支推送了提交,你也對同樣文件進行了修改,並試圖推送,此時就有了衝突。

   此時需要將最新的origin/dev抓下來,然後再本地合併,解決衝突,再推送:

   git pull //將最新修改抓取

   此時失敗了。。。原因是沒有指定本地dev分支與遠程origin/dev分支的鏈接,

   設置dev和origin/dev的鏈接

   git branch --set-upstream dev origin/dev

之後 git pull

   此時依舊有衝突,本地解決衝突即可。

多人合作工作模式:

   首先試圖用git push origin branch-name 推送自己的修改

   如果推送失敗,則因爲遠程分支比本地更新,需要先用git pull 合併分支時,Git會使用        git pull試圖合併

   如果合併有衝突,則解決衝突並在本地提交

   如果沒有衝突,再用git push origin branch-name推送



學習網站:http://www.liaoxuefeng.com/

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