關於git的用法

一,安裝githtml

  下載地址 https://git-scm.com/download/wingit

二,如何使用gitgithub

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

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

  $ git config --global user.name "ycbou"dom

  $ git config --global user.email "qiyincui77@163.com"ssh

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

以後去查看aaa目裏會多了個.git 的文件夾,若是看不見也沒事,由於隱藏文件不可見分佈式

   下面去新增一些文件,隨便輸入些內容,而後再git裏面輸入 git status。會發現添加的文件名是紅色的網站

紅色說明文件作了修改可是還沒保存到本地倉庫,咱們緊接着執行 git add . 再敲git status 發現剛纔的紅色文件名變成綠色的了,

咱們繼續敲 git commit -m "作修改"

敲完以後,使用git status 發現上面說工做區很乾淨。沒有文件要被提交

三,git原理

git 分爲工做區、暫存區、本地倉庫

工做區:你如今編輯器所處的那個工程裏面,

git status 是狀態查看,查看你工做區和暫存區有沒有文件被提交到本地倉庫,若是有工做區未向暫存區保存就顯示紅色

若是有暫存區沒有提交到本地倉庫就綠色

什麼是本地倉庫呢,就是一開始說的那個不可見的文件,你一執行git init就會有一個本地倉庫出來

若是從工做區把文件提交到暫存區呢?就是使用 git add . .表明全部,也能夠寫成 git add index.html 【index.html】

就是你作了變更的文件名  git add .  就是把文件從暫存區提交到本地倉庫

使用 git commit -m ‘作修改’ 引號裏面的內容是本身添加的一個備註, 

在文件裏繼續添加一段話,再git status 查看當前狀態。發現有未向暫存區提交的保存  接着 

git commit -m ‘第二次修改’ 將暫存區文件提交到本地倉庫,以後 再用git status 查看,

發現已經沒有文件提交;了

四,版本回退

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

若是以爲很亂可使用 git log --pretty=oneline

能夠看出咱們的兩次提交,前面那串黃色的就是咱們的版本號,如今要回到我原先的版本怎麼辦

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

回到上上個版本,可使用命令 git reset --hard HEAD^^ 

咱們也能夠同給某個版本號回退到相應版本

git reset --hard 【版本號】

若是我如今又發現原來新版本的解決方法了,我又想回到新版本上去怎麼辦呢?

如今用git log 已經不能看到新版本的版本號了,只能採用新命令了  叫git reflog 來查看命令歷史

使用git reset --hard 【版本號】回到最新版本

如今接着往下進行,在index.html 接着添加一行

後來發現這句話不慎和是,這個時候能夠直接刪除,而後git add . 就行了。

可是也能夠經過git checkout -- index.html .此時前面那句話沒有了,這種狀況適用於咱們沒有git add到暫存區之氣an

若是咱們已經git add到暫存區了,怎麼撤銷修改呢 咱們可使用git reset HEAD index.html 先撤銷暫存區的修改

而後咱們能夠經過命令git diff查看暫存區和工做區有什麼不一樣,以後咱們能夠經過git checkout --index.html

發現已經修改好了,可是萬一咱們已經提交到倉庫裏,那就是上面說的版本回退了

5、刪除文件

新建一個test.txt  git add tsxt.txt 已經 git commit -m "xxx"

如今若是要刪了,經過git status 發現工做區和本地庫已經不同了,

若是確實要刪除 就 git rm test.txt 以後再git commit -m 'remove'

若是刪除錯了,還原回來的話 用 git checkout -- test.txt

 6、遠程倉庫

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

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

把這個郵箱替換成本身的

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

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

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

打開以後隨便寫入一個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

 https://www.cnblogs.com/my-freedom/p/5701427.html

相關文章
相關標籤/搜索