手把手教你用git

1、如何安裝git

下載地址:html

https://git-scm.com/download/wingit

根據本身的電腦選擇是32位的仍是64位的。下載完後直接運行,以後一直next就行了。安裝成功後,會有這樣一個標誌。github

 

2、如何使用git

(1)首先你要點進去https://github.com/這個網站,註冊一個github帳號。註冊好以後,要記住郵箱和密碼。segmentfault

(2) 打開以前的那個圖標就是這樣一個窗口,首先Git是分佈式版本控制系統,因此須要填寫用戶名和郵箱做爲一個標識,分別輸入這兩個命令,用戶名和郵箱須要換成本身的。安全

 

     (3)  打開以前的那個圖標就是這樣一個窗口。如今好比我在個人C:/wamp/www/aaa有一個項目,我要對它進行管理怎麼辦呢。直接在控制檯裏面輸入  cd   c:/wamp/www/aaa  以後你就會在aaa這個目錄裏面了。那如何對它進行管理呢。直接在控制檯輸入git  initssh

 

      以後你去查看aaa目錄裏面發現裏面多了這樣一個東西編輯器

 

      這是一個隱藏文件夾,有點電腦看不見,是由於文件夾選項設置的隱藏文件不可見,這個去控制面板裏的文件夾選擇設置一下就行了。分佈式

下面咱們接着來操做,試着開始寫咱們的項目。網站

首先我寫一個首頁叫index.htmlthis

 

     如今我在個人頁面裏寫好了這樣一段話,保存以後咱們接着來進行操做。

如今咱們開始在git裏面輸入一段話 git status

 

咱們能夠看到index.html這個文件是紅色,這是說明咱們這個文件已經作了修改,可是還沒保存到本地倉庫裏面。如今咱們接着執行操做 git add  index.html  敲完這個命令接着git status發現index.html變成綠色的啦。

 

接着咱們敲命令  git commit   -m  「the first time」

     敲完以後,接着使用git status發現上面說工做區很乾淨,沒有文件要被提交。如今我來解釋一下這幾個命令。

      首先你得明白這幾個概念,工做區就是你如今編輯器所處的那個工程裏面,在這個指的就是aaa這個文件夾。剛纔你寫了一個index.html寫完以後就是往工做區增添了一個文件,而後你用git status查看狀態發現,index.html是紅色的。git status是什麼意思呢,就是查看你工做區和暫存區有沒有文件沒被提交到本地倉庫,若是有工做室未向暫存區保存的就顯示紅色,若是有暫存區沒提交到本地倉庫的就是綠色。那麼什麼是本地倉庫呢,就是一開始說的那個不可見的文件夾,你一執行git init命令就會有一個本地倉庫出來

     如今咱們接着來看,如何從工做區把文件提交到暫存區,就是使用命令git add index.html就能夠了。把文件從暫存區提交到本地倉庫呢,就是使用命令git  commit  –m 「the first time」 這個引號裏面的內容是隨意的,就是本身添加一個備註,好比本身改動了什麼東西。理解了這句話,咱們接着進行操做,咱們個人index.html裏面繼續添加一段話。我再git status查看一下當前的狀態,發現有未向暫存區提交的保存,接着咱們採用 git commit –m 「the second time」命令將暫存區的文件提交到本地倉庫。以後再用git status來查看一下,發現已經沒有文件要提交了。

(4)版本回退

      到目前爲止,咱們已經向工做區提交了兩次修改。Git給咱們提供了一個git log 能夠查看咱們最近的提交歷史

 

 

      若是看的很亂,可使用這個命令,git log -–pretty=oneline

 

     能夠看出來咱們的兩次提交,前面那串黃色的就是咱們的版本號。如今我發現我第二次提交的代碼運行很差使,想回到我原來的那個版本怎麼辦呢

可使用命令git reset –hard HEAD^這個命令是回退到上一個版本

 

     執行完以後,我再回頭看看個人index.html發現已經變成了我第一次提交時的樣子

     接着繼續。萬一要回退到上上個版本呢,可使用命令git reset –hard HEAD^^,那要是回到到一百個版本就要寫100^嗎,也太麻煩了吧

如今咱們經過git log –pretty=oneline已經獲取到了每次修改的版本號。那麼咱們就可使用git reset –hard 版本號就行了。好比剛纔我要回退到上個版本就可使用git reset –hard 21a77

發現也一樣有效果。這裏版本號不用寫全,寫一部分能表示這個就行。如今咱們再用git log來查看一下如今的狀態,發現咱們如今的版本只剩下一個了

 

     可是我如今又發現,我知道原來新版本的解決方法了,我又想回到新版本去怎麼辦呢,如今用git log已經看不到新版本的版本號了。只能採用新的命令了叫作git reflog查看命令歷史

 

      在這裏發現他記錄了咱們全部的操做,如今咱們繼續使用git reset –hard e2f3發現咱們又回到新版本了。咱們發現index.html已經回到原來的狀態了。

 

 

      如今咱們接着往下面進行。在index.html裏面咱們接着添加一行。

 

     後來發現這句話不是很合適,固然這個時候咱們能夠把這句話直接刪掉,而後再git add ,就行了。但也能夠經過git checkout – index.html。此時咱們發現那句話已經沒有了。這種狀況適用於咱們沒有git add到暫存區以前。若是咱們已經git add到暫存區了,怎麼撤銷修改呢。咱們可使用命令 git  reset HEAD index.html先撤銷暫存區的修改,而後咱們能夠經過命令git diff查看暫存區和工做區有什麼不一樣,以後咱們能夠經過命令git checkout –index.html 發現已經修改好了。可是萬一咱們已經提交到倉庫裏呢怎麼辦呢,也就是咱們git commit,那就要使用咱們上面所說的版本回退了。

(5)刪除文件

      如今咱們在aaa目錄下新建一個文件叫test.txt。咱們在裏面隨便寫幾個字以後,經過git add text.txt 已經git commit –m 「the third time」就已經把test.txt已經寫入本地庫裏了

假設如今咱們發現咱們已經不須要test.txt這個文件了,因此咱們把它給刪了。這個時候你經過git status發現工做區和本地庫裏的文件不同了。

     如今咱們有兩種選擇,一種是咱們確實要刪除。使用git rm test.txt 以後再git commit –m 「remve test.txt」發現咱們的本地庫裏的文件已經被刪除了。那麼另一種狀況就是我刪錯了,我想還原回來怎麼辦呢,使用命令git checkout – test.txt就發現這個文件已經還原了。

(6)遠程倉庫

     到目前爲止,咱們已經學會了如何在本地庫和工做區之間進行操做,那這時你就會說我沒有看到如何分工協做呢,彆着急,遠程倉庫還幫你解決這個問題。

首先你要點進去https://github.com/這個網站,登陸你剛纔註冊的github帳號

ssh-keygen -t rsa -C youremail@example.com

     把這個郵箱替換成本身的

以後一路回車,若是一切順利的話你去你的C盤下去找你的user文件夾,有的叫用戶,你在裏面搜索一下有沒有一個.ssh的文件夾,把它打開以後,裏面有這幾個文件

 

      以後接着打開那個https://github.com/網站,登陸進去。

 

     點擊右邊這個綠色的圖表,點開下拉框以後裏面有個setting

 

 

    以後會出來這樣一個頁面,點擊左邊的ssh keys

 

 

     打開以後是這樣的一個頁面,隨便寫入一個title而後打開你剛纔找到的再C盤裏的那個id_rsa.pub.把裏面的內容複製到那個key裏面去,以後點擊添加便可。

以後回到一開始的這個頁面,

 

 

   點擊中間的那個加號

   選擇第一個,這就至關於你本身在遠程建了一個倉庫。

 

 

     點擊以後,會出來這樣一個頁面。如今咱們在那個名字哪裏寫上aaa,直接點擊建立就好。

目前,在GitHub上的這個learngit倉庫仍是空的,GitHub告訴咱們,能夠從這個倉庫克隆出新的倉庫,也能夠把一個已有的本地倉庫與之關聯,而後,把本地倉庫的內容推送到GitHub倉庫。

     如今,咱們根據GitHub的提示,在本地的aaa倉庫下運行命令:

$ git remote add origin git@github.com:BrouceLee/aaa.git

請千萬注意,把上面的BrouceLee替換成你本身的GitHub帳戶名,不然,你在本地關聯的就是個人遠程庫

添加後,遠程庫的名字就是origin,這是Git默認的叫法,也能夠改爲別的,可是origin這個名字一看就知道是遠程庫。

接着執行命令git push -u origin master

執行完以後,咱們發現咱們的遠程庫和本地倉庫已經同步了。

 

 

     從如今起,只要本地做了提交,就能夠經過命令:

$ git push origin master

把本地master分支的最新修改推送至GitHub,如今,你就擁有了真正的分佈式版本庫!

(7)從遠程庫克隆

     上次咱們講了先有本地庫,後有遠程庫的時候,如何關聯遠程庫。

如今,假設咱們從零開發,那麼最好的方式是先建立遠程庫,而後,從遠程庫克隆。

首先,登錄GitHub,建立一個新的倉庫,名字叫gitskills:

 

 

      咱們勾選Initialize this repository with a README,這樣GitHub會自動爲咱們建立一個README.md文件。建立完畢後,能夠看到README.md文件:

如今,遠程庫已經準備好了,下一步是用命令git clone克隆一個本地庫:

咱們在想要建立項目的地方執行下面的命令

git clone git@github.com:BrouceLee/gitskills.git

     如今去你你想要建工程的地方開始,就能夠發現大致上已經建好了。

(8)分支管理

      分支在實際中有什麼用呢?假設你準備開發一個新功能,可是須要兩週才能完成,第一週你寫了50%的代碼,若是馬上提交,因爲代碼還沒寫完,不完整的代碼庫會致使別人不能幹活了。若是等代碼所有寫完再一次提交,又存在丟失天天進度的巨大風險。

     如今有了分支,就不用怕了。你建立了一個屬於你本身的分支,別人看不到,還繼續在原來的分支上正常工做,而你在本身的分支上幹活,想提交就提交,直到開發完畢後,再一次性合併到原來的分支上,這樣,既安全,又不影響別人工做。

首先我來建立一個分支

執行命令git checkout -b dev 這樣就建立好了一個dev分支

咱們來介紹一下,最開始的時候咱們的全部操做都是默認在一個叫作master的分支上操做的,包括提交到遠程庫,等等。關聯遠程庫的時候也是從遠程關聯master分支。當咱們用dev這個分支寫完一個項目以後,咱們要把這個分支所作的工做向master分支進行靠攏.

咱們如今能夠經過命令git branch來查看一下全部的分支

git branch命令會列出全部分支,當前分支前面會標一個*號。

而後,咱們就能夠在dev分支上正常提交,好比對index.html作個修改,加上一行

 

 

      而後咱們執行git add index.html以及 git commit –m 「use the dev first」

如今我dev的分支工做已經作完,如今我能夠切換回master分支。利用命令

git  checkout master

       切換回master分支以後,咱們發現index.html裏面咱們新加的那句話不在了。由於咱們剛纔是在dev分支上作的提交。如今咱們要把分支合到master上,就利用命令 git merge dev就能夠了,此時再去查看index.html發現咱們在dev裏面作的操做已經在master裏面了。如今咱們可使用命令git branch –d dev來刪除dev這個分支,以後再使用git branch來查看分支發現只有master一個分支了。由於建立、合併和刪除分支很是快,因此Git鼓勵你使用分支完成某個任務,合併後再刪掉分支,這和直接在master分支上工做效果是同樣的,但過程更安全。

3、解決衝突

      如今咱們考慮這樣一種狀況,咱們新建了一個分支feature1,利用feature1來進行把index.html裏面再加一行,首先切換到feature1這個分支,而後修改index.html,以後提交

 

 

     而後咱們切換回master分支,如今咱們在master裏的index.html裏面加一句話,以後進行提交。以後咱們按照剛纔的那種方式合併兩個分支。git merge feature1會發現有衝突出現

 

 

此時應該怎麼解決呢,此時必須手動解決衝突。

四.分支策略

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

首先,master分支應該是很是穩定的,也就是僅用來發布新版本,平時不能在上面幹活;

那在哪幹活呢?幹活都在dev分支上,也就是說,dev分支是不穩定的,到某個時候,好比1.0版本發佈時,再把dev分支合併到master上,在master分支發佈1.0版本;

你和你的小夥伴們每一個人都在dev分支上幹活,每一個人都有本身的分支,時不時地往dev分支上合併就能夠了。

因此,團隊合做的分支看起來就像這樣:

 

最後推薦一個詳細的分工合做的網站,必定要看。http://www.javashuo.com/article/p-udnzcefn-ds.html

相關文章
相關標籤/搜索