Git 命令行使用


 

一、git簡介:


  Linux創建了Linux,但是Linux的發展壯大是由世界各地的熱心志願者參與編寫的?那么那么多份的代碼是怎么合並的呢?之前是在2002年以前,世界各地的志願者把源代碼文件通過diff的方式發給Linus,然后由Linus本人通過手工方式合並代碼!  

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

 

二、集中式的版本控制系統和分布式版本控制系統的不同
  集中式的版本控制系統: 代表有CVS 、SVN

  特點: 版本庫集中存放在中央服務器 必須聯網才能工作 如果中央服務器的代碼被惡意修改了,所有人的代碼都可能會有問題
只能跟蹤文本文件的改動,比如txt文件,網頁,所有的程序代碼等


  分布式版本控制系統的是 Git

  特點: 版本庫在自己的電腦上 不需要聯網也能工作 安全性高 只能跟蹤文本文件的改動,比如txt文件,網頁,所有的程序代碼等
強烈建議使用UTF-8編碼 所有語言使用同一種編碼,既沒有沖突,又被所有平台所支持

 


三、 安裝Git

 在Linux上安裝Git

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官網搜索 直接下載使用



四、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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM