Git 命令行使用

 

1、git簡介:git


  Linux建立了Linux,可是Linux的發展壯大是由世界各地的熱心志願者參與編寫的?那麼那麼多份的代碼是怎麼合併的呢?以前是在2002年之前,世界各地的志願者把源代碼文件經過diff的方式發給Linus,而後由Linus本人經過手工方式合併代碼!  windows

   Git是由Linus花了兩週時間本身用C寫了一個分佈式版本控制系統 。2008年,GitHub網站上線了,它爲開源項目免費提供Git存儲,無數開源項目開始遷移至GitHub,包括jQuery,PHP,Ruby等等。歷史就是這麼偶然,若是不是當年BitMover公司威脅Linux社區,可能如今咱們就沒有免費而超級好用的Git了。安全

 

2、集中式的版本控制系統和分佈式版本控制系統的不一樣
  集中式的版本控制系統: 表明有CVS 、SVN服務器

  特色: 版本庫集中存放在中央服務器 必須聯網才能工做 若是中央服務器的代碼被惡意修改了,全部人的代碼均可能會有問題
只能跟蹤文本文件的改動,好比txt文件,網頁,全部的程序代碼等分佈式


  分佈式版本控制系統的是 Git工具

  特色: 版本庫在本身的電腦上 不須要聯網也能工做 安全性高 只能跟蹤文本文件的改動,好比txt文件,網頁,全部的程序代碼等
強烈建議使用UTF-8編碼 全部語言使用同一種編碼,既沒有衝突,又被全部平臺所支持網站

 


3、 安裝Git
編碼

 在Linux上安裝Gitspa

1. 若是碰到Ubuntu或Debian 請使用下面命令:

$ git //這條命令檢查系統中是否有Git命令行

sudo apt-get install git // 若是沒有,則使用這條命令來進行安裝Git

2. 若是碰到的是 CentOS 請使用下面命令:

$ git // 這條命令檢查系統中是否有Git

sudo yum install git


 在Windows上安裝Git

1. 若是是32位系統 請使用安裝包

[32位系統的Git](./Other/Git-2.14.3-32-bit.exe)

2. 若是是64位系統 請使用安裝包

[64位系統的Git](./Other/Git-2.14.3-64-bit.exe)
在Mac OS 上安裝Git

本身上Git官網搜索 直接下載使用



4、Git安裝好了,那麼下面咱們來一塊兒使用

 版本倉庫(repository),那麼說是一個文件夾更好理解

> 1. 選擇一個合適的地方,建立一個空目錄

 #打開命令行工具,輸入命令 表明新建了一個名字爲git的文件夾
mkdir git

# 進入Git文件夾中
cd git

# 查看該文件夾的絕對位置(在windows中) **若是看到輸入的pwd中有中文 請確保你的路徑中沒有中文**
pwd

 

> 2. 把剛纔建立的文件夾目錄變成git能夠管理的倉庫

# 初始化倉庫
git init

# 若是你的文件夾中沒有任何內容將會獲得以下輸出結果 表明是初始化了一個空的Git倉庫

Initialized empty Git repository in F:/git/.git/

 注意: 在使用以前咱們來理解一些概念  -----工做區和暫存區---

> 名詞解釋

1.工做區(Working Directory)      :   就是你在電腦裏能看到的目錄,好比個人GitHub文件夾目錄


2.版本庫(Repository):     在工做區有一個隱藏目錄.git,這個就是Git的版本庫


3.暫存區:    在版本庫中存在一個成爲Stage的暫存區,它是專門存儲修改和添加的區域。一旦提交後,若是你又沒有對工做區作任何修改,那麼暫存區就是乾淨的
 
## 管理修改(須要案例證實)
爲何Git比其餘版本控制系統設計得優秀,由於Git跟蹤並管理的是修改,而非文件。你會問,什麼是修改?好比你新增了一行,這就是一個修改,刪除了一行,也是一個修改,更改了某些字符,也是一個修改,刪了一些又加了一些,也是一個修改,甚至建立一個新文件,也算一個修改。
> Git不會提交沒有放到暫存區的修改
這裏我畫了一個圖方便你們理解

 看了這個圖是否是理解了他的工做機制了呢?
下面繼續-------------------------------------------------
1  如今咱們編寫一個first.txt 文件,並把該文件提交修改到git版本庫
# 把要提交的文件添加到版本庫
git add 文件名

# 把要提交的文件提交到版本庫
git commit -m "本次提交的說明"

咱們再次對文件進行修改  
#查詢工做區和版本庫的文件狀態,紅色的表明修改後的文件在工做區,沒有添加到暫存區或者提交

#咱們來 把剛纔的修改後的文件添加和提交一下

 

 

> 2. 查看提交的日誌記錄

# 查看咱們提交的歷史記錄
git log 或 git log --pretty=oneline


git log --pretty=oneline 這個命令讓每次提交信息都在一行顯示 更清晰直觀  前面一串字母和數字表明瞭每次提交的id號,咱們能夠根據id 和提交信息找到對應的文件版本,是否是很方便呢


再修改提交幾回

next 就是怎麼找回之前版本-----驚喜在下面!!!!!


> 3. 版本回退

# 把版本回退到前面的版本 當前版本 HEAD 上一個版本HEAD^ 往上100個版本 HEAD~100
git reset --hard HEAD^
當前版本查詢(fourth commit)

上一版本查詢(second commit)

......

> 4. 查看本身的每一次命令的記錄

# 若是回退到某一個版本以後又後悔了,那麼能夠再回到某一次提交,這時能夠查看本身的寫過的命令
git reflog (能夠看到所有的提交信息,及版本回退記錄)

這時候根據id和提交信息就能夠輕鬆找回你須要的那個版本了

> 5. 回到某一次的提交

# 回到某一次提交就要找到某一次提交的id ,使用fit reflog能夠查看本身的命令id
git reset --hard id號(好比找回第四次提交的版本)git reset --hard 第四次提交版本的id號,這樣當前版本就是第四次提交的版本啦

 

## 撤銷修改

> 1.當你改亂了工做區某個文件的內容,想直接丟棄工做區的修改時

命令: git checkout -- file

> 2.當你不但改亂了工做區某個文件的內容,還添加到了暫存區時,想丟棄修改

1. git reset HEAD file
2. git checkout -- file

## 刪除文件

> 1.確實要刪除

git rm  文件名  把文件刪掉
經過git 和 commit 操做的文件 若是在文件夾中 本身手動刪除 Git是能跟蹤到的
使用 git status

> 2.刪錯了

git checkout -- files

注意:命令git rm用於刪除一個文件。若是一個文件已經被提交到版本庫,那麼你永遠不用擔憂誤刪,可是要當心,你只能恢復文件到最新版本,你會丟失最近一次提交後你修改的內容
如今你可能遇到了兩種狀況:
1 在git commit 以前 那麼就用git checkout -- .\rewrite.txt 撤銷
2 若是在git commit以後 那麼就用git reset -- hard id 就能夠回退到你刪除的這個文件版本下

 

 

## 建立與合併分支

> 1.查看分支

git branch

> 2.建立分支

git branch 分支名字

> 3.切換分支

git checkout 分支名字

 

> 4.合併某分支到當前分支

git merge 分支名字(不是當前的分支)


> 5.刪除分支

git branch -d 分支名字

 

 

## 解決衝突
出現衝突
1 在主分支上有一個文件 confit.txt
2 而後新建一個分支queen
3 切換到新分支
4 在這個新分支上建一個文件 confit.txt
5 更改文件的內容 在新分支上提交
6 切換分支到主分支 ,修改confit.txt(和在新分支上修改同一行)
7 提交
8 合併分支,即出現了衝突

 

解決方案:商量保留誰提交的內容,而後手動刪除被捨棄的內容,最後執行添加並修改

 

 ##bug分支 

情景:undong.txt 工做還沒作完(暫存區有不少add文件,這時尚未commit),這時接收到一個必須在兩小時內完成的bug文件(和以前的工做無關)
1 這時就要保存工做現場 git stash
2 添加新分支 git branch fixbug
3 切換到這個分支 git checkout fixbug
4 git add bug文件
5 提交 git commit
6 刪除該分支(通常狀況應該合併)
查看分支現場 git
7 修復以前的分支 git stash pop

相關文章
相關標籤/搜索