Git的一些基本操做和命令

一、建立版本庫git

在D盤中打開Git Bash Heregithub

1.一、建立一個空目錄服務器

Mkdir gitDemo –建立一個目錄app

Cd gitDemo  --進入gitDemo目錄3d

Pwd –查看當前目錄的路徑指針

 

1.二、經過git init命令把目錄變成git能夠管理的倉庫日誌

Git initblog

 

你會發現,多出一個.git文件,也能夠理解成存放代碼的倉庫(暫存區)開發

1.三、把文件添加到倉庫中(暫存區)rem

建立一個文件readme.txt,內容隨便寫

Git add readme.txt –將文件放入暫存區

 

沒有提示表明成功

1.四、把文件提交到倉庫中

Git commit –m ‘提交readme.txt文件’

 

能夠經過git status 查看狀態

 

若是有文件未提交,好比在readme.txt 中新增內容

 

能夠經過git diff 命令查看修改的內容

 

若是要提交到git倉庫中,你須要先add 而後再 commit

 

小結:

初始化一個Git倉庫,使用git init命令。

添加文件到Git倉庫,分兩步:

使用命令git add <file>,注意,可反覆屢次使用,添加多個文件;

使用命令git commit -m <message>,完成。

二、理解工做區和暫存區

       工做區:就是你在電腦上看到的目錄,好比目錄下testgit裏的文件(.git隱藏目錄版本庫除外)。或者之後須要再新建的目錄文件等等都屬於工做區範疇。

  版本庫(Repository):工做區有一個隱藏目錄.git,這個不屬於工做區,這是版本庫。其中版本庫裏面存了不少東西,其中最重要的就是stage(暫存區),還有Git爲咱們自動建立了第一個分支master,以及指向master的一個指針HEAD。

  咱們前面說過使用Git提交文件到版本庫有兩步:

  第一步:是使用 git add 把文件添加進去,實際上就是把文件添加到暫存區。

第二步:使用git commit提交更改,實際上就是把暫存區的全部內容提交到當前分支上。

三、版本回退

3.一、查看歷史記錄

Git log

 

若是要簡化上面的信息

Git log --pretty=oneline

 

也能夠更簡單

 

注意,上面三個圖黃色部分爲commitId(也就是下面所說的版本號),它是全球惟一的,reflog中的commitid是簡寫。

3.二、還原到指定的版本號

Git reset --hard 版本號

 

注意事項:還原到指定版本後,在經過git log查看,就找不到指定版本以後的信息了,如上圖所示,若是想還原到指定版本以後的信息,只能經過git reflog查找,以下圖所示:

 

四、git撤銷和刪除文件

4.一、撤銷操做

若是我發現readme.txt新增的內容有誤,可是我已經add了,尚未提交,那麼我能夠經過如下方法進行修改:

(1):手動改寫readme.txt錯誤的信息,而後add—》commit。

(2):經過git reset --hard 版本號命令恢復到上一個版本。

如今有一個新方法,使用git checkout -- file 方法丟棄工做區的修改

 

命令 git checkout -- readme.txt 意思就是,把readme.txt文件在工做區作的修改所有撤銷,將工做區的內容改成暫存區的內容。

4.二、刪除文件

好比我新增了一個文件a.txt

 

而後我在目錄裏面刪除a.txt(rm a.txt),我如今有三種選擇:

(1):直接addàcommit提交

(2):恢復到之前版本(git reset –hard 韓本號)。

(3):撤銷修改內容 git checkout – a.txt(前提是沒有add)

五、建立與合併分支

在版本回填退裏,你已經知道,每次提交,Git都把它們串成一條時間線,這條時間線就是一個分支。截止到目前,只有一條時間線,在Git裏,這個分支叫主分支,即master分支。HEAD嚴格來講不是指向提交,而是指向master,master纔是指向提交的,因此,HEAD指向的就是當前分支。

5.一、建立一個分支並切換到該分支(git checkout –b dev)

 

Git branch 查看當前分支

 

       git checkout 命令加上 –b參數表示建立並切換,至關於以下2條命令

  git branch dev :建立分支

       git checkout dev:切換分支

5.二、

在文件a.txt中添加內容1111111並提交

 

查看master(主分支a.txt內容)

咱們能夠看到主分支的a.txt文件沒有內容,這時候咱們須要將dev分支合併到master分支上。

 

git merge命令用於合併指定分支到當前分支上,合併後,再查看readme.txt內容,能夠看到,和dev分支最新提交的是徹底同樣的。

注意到上面的Fast-forward信息,Git告訴咱們,此次合併是「快進模式」,也就是直接把master指向dev的當前提交,因此合併速度很是快。

合併完成後,咱們能夠接着刪除dev分支了,操做以下:

 

總結建立與合併分支命令以下:

  查看分支:git branch

  建立分支:git branch name

  切換分支:git checkout name

  建立+切換分支:git checkout –b name

  合併某分支到當前分支:git merge name

       刪除分支:git branch –d name

六、分支管理策略

一般合併分支時,git通常使用」Fast forward」模式,在這種模式下,刪除分支後,會丟掉分支信息(經過日誌找不到了)如今咱們來使用帶參數 –no-ff來禁用」Fast forward」模式。首先咱們來作demo演示下:

建立一個dev分支。

修改readme.txt內容。

添加到暫存區。

切換回主分支(master)。

合併dev分支,使用命令 git merge –no-ff  -m 「註釋」 dev

查看歷史記錄

 

分支策略:首先master主分支應該是很是穩定的,也就是用來發布新版本,通常狀況下不容許在上面幹活,幹活通常狀況下在新建的dev分支上幹活,幹完後,好比上要發佈,或者說dev分支代碼穩定後能夠合併到主分支master上來。

七、多人協同開發

多人協做時,你們都會往master分支上推送各自的修改。如今咱們能夠模擬另一個同事,能夠在另外一臺電腦上(注意要把SSH key添加到github上)或者同一臺電腦上另一個目錄克隆,新建一個目錄名字叫gitDemo1

7.一、先將分支新增一個新內容(可増可不增,方便了解分支)推送到遠程庫中

 

7.二、進入gitDemo1目錄中,克隆遠程庫到本地

 

7.三、建立分支並與遠程庫關聯:git checkout  –b dev origin/dev

 

注意:clone過來的readme.txt文件沒有dev內容的

雖然你cat readme.txt能夠看到,由於clone過來的是master主線,你可使用git pull將遠程庫內容拉過來

 

7.四、在gitDemo1/gitDemo/readme.txt文件底下新增內容aaaaaaa

 

7.五、將新增的內容推送到遠程庫dev分支上

 

刷新遠程庫地址

 

7.六、在d:\gitDemo目錄底下拉取剛纔d:\gitDemo1\gitDemo提交的修改

 

Git pull失敗,緣由是沒有指定本地dev分支與遠程origin/dev分支的連接(雖然前面咱們使用git push origin dev推送了分支,但也須要創建鏈接),根據提示,設置dev和origin/dev的連接

 

7.七、當dev代碼沒有錯誤的時候,將dev代碼合併到master中

 

所以:多人協做工做模式通常是這樣的:

       首先,能夠試圖用git push origin branch-name推送本身的修改.

若是推送失敗,則由於遠程分支比你的本地更新早,須要先用git pull試圖合併。

若是合併有衝突,則須要解決衝突,並在本地提交。再用git push origin branch-name推送。

最後發佈程序的時候,負責人在服務器上將遠程庫中的dev拉過來(git pull),而後合併到master主線上(git merge dev)。

 

Git基本經常使用命令以下:

  mkdir:         XX (建立一個空目錄 XX指目錄名)

  pwd:          顯示當前目錄的路徑。

  git init          把當前的目錄變成能夠管理的git倉庫,生成隱藏.git文件。

  git add XX       把xx文件添加到暫存區去。

  git commit –m 「XX」  提交文件 –m 後面的是註釋。

  git status        查看倉庫狀態

  git diff  XX      查看XX文件修改了那些內容

  git log          查看歷史記錄

  git reset  --hard HEAD^ 或者 git reset  --hard HEAD~ 回退到上一個版本

  (若是想回退到100個版本,使用git reset –hard HEAD~100 ,也能夠不寫HEAD~,直接寫版本號,版本號經過日誌查找)

  cat XX         查看XX文件內容

  git reflog       查看歷史記錄的版本號id

  git checkout -- XX  把XX文件在工做區的修改所有撤銷。

  git rm XX          刪除XX文件

  git remote add origin https://github.com/tugenhua0707/testgit 關聯一個遠程庫

  git push –u(第一次要用-u 之後不須要) origin master 把當前master分支推送到遠程庫(如何推送分支,將master改爲分支名字,好比:dev)

  git clone https://github.com/tugenhua0707/testgit  從遠程庫中克隆

  git checkout –b dev  建立dev分支 並切換到dev分支上

  git branch  查看當前全部的分支

  git checkout master 切換回master分支

  git merge dev    在當前的分支上合併dev分支

  git branch –d dev 刪除dev分支

  git branch name  建立分支

  git stash 把當前的工做隱藏起來 等之後恢復現場後繼續工做

  git stash list 查看全部被隱藏的文件列表

  git stash apply 恢復被隱藏的文件,可是內容不刪除

  git stash drop 刪除文件

  git stash pop 恢復文件的同時 也刪除文件

  git remote 查看遠程庫的信息

  git remote –v 查看遠程庫的詳細信息

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

       git pull  將遠程庫內容拉過來

相關文章
相關標籤/搜索