git的命令行操作

Git 命令行使用


一、git簡介:

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

   Git是由Linus花了兩周時(shí)間自己用C寫了一個(gè)分布式版本控制系統(tǒng) 。2008年,GitHub網(wǎng)站上線了,它為開源項(xiàng)目免費(fèi)提供Git存儲(chǔ),無數(shù)開源項(xiàng)目開始遷移至GitHub,包括jQuery,PHP,Ruby等等。歷史就是這么偶然,如果不是當(dāng)年BitMover公司威脅Linux社區(qū),可能現(xiàn)在我們就沒有免費(fèi)而超級(jí)好用的Git了。


二、集中式的版本控制系統(tǒng)和分布式版本控制系統(tǒng)的不同

集中式的版本控制系統(tǒng): 代表有CVS 、SVN

特點(diǎn): 版本庫集中存放在中央服務(wù)器 必須聯(lián)網(wǎng)才能工作 如果中央服務(wù)器的代碼被惡意修改了,所有人的代碼都可能會(huì)有問題

只能跟蹤文本文件的改動(dòng),比如txt文件,網(wǎng)頁,所有的程序代碼等

分布式版本控制系統(tǒng)的是 Git

特點(diǎn): 版本庫在自己的電腦上 不需要聯(lián)網(wǎng)也能工作 安全性高 只能跟蹤文本文件的改動(dòng),比如txt文件,網(wǎng)頁,所有的程序代碼等

強(qiáng)烈建議使用UTF-8編碼 所有語言使用同一種編碼,既沒有沖突,又被所有平臺(tái)所支持


三、 安裝Git

?在Linux上安裝Git

1. 如果碰到Ubuntu或Debian 請使用下面命令:

$ git //這條命令檢查系統(tǒng)中是否有Git

sudo apt-get install git // 如果沒有,則使用這條命令來進(jìn)行安裝Git

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

$ git // 這條命令檢查系統(tǒng)中是否有Git

sudo yum install git

在Windows上安裝Git

1. 如果是32位系統(tǒng) 請使用安裝包

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

2. 如果是64位系統(tǒng) 請使用安裝包

[64位系統(tǒng)的Git](./Other/Git-2.14.3-64-bit.exe)?

在Mac OS 上安裝Git

自己上Git官網(wǎng)搜索 直接下載使用

四、Git安裝好了,那么下面我們來一起使用

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

>?1. 選擇一個(gè)合適的地方,創(chuàng)建一個(gè)空目錄

#打開命令行工具,輸入命令 代表新建了一個(gè)名字為git的文件夾

mkdir git

# 進(jìn)入Git文件夾中

cd git

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

pwd


> 2. 把剛才創(chuàng)建的文件夾目錄變成git可以管理的倉庫

# 初始化倉庫

git init

# 如果你的文件夾中沒有任何內(nèi)容將會(huì)得到如下輸出結(jié)果 代表是初始化了一個(gè)空的Git倉庫

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

?注意: 在使用之前我們來理解一些概念? -----工作區(qū)和暫存區(qū)---

> 名詞解釋

1.工作區(qū)(Working Directory)? ? ? :? ?就是你在電腦里能看到的目錄,比如我的GitHub文件夾目錄

2.版本庫(Repository):? ? ?在工作區(qū)有一個(gè)隱藏目錄.git,這個(gè)就是Git的版本庫

3.暫存區(qū):? ? 在版本庫中存在一個(gè)成為Stage的暫存區(qū),它是專門存儲(chǔ)修改和添加的區(qū)域。一旦提交后,如果你又沒有對(duì)工作區(qū)做任何修改,那么暫存區(qū)就是干凈的

## 管理修改(需要案例證明)

為什么Git比其他版本控制系統(tǒng)設(shè)計(jì)得優(yōu)秀,因?yàn)镚it跟蹤并管理的是修改,而非文件。你會(huì)問,什么是修改?比如你新增了一行,這就是一個(gè)修改,刪除了一行,也是一個(gè)修改,更改了某些字符,也是一個(gè)修改,刪了一些又加了一些,也是一個(gè)修改,甚至創(chuàng)建一個(gè)新文件,也算一個(gè)修改。

> Git不會(huì)提交沒有放到暫存區(qū)的修改

這里我畫了一個(gè)圖方便大家理解

看了這個(gè)圖是不是理解了他的工作機(jī)制了呢?

下面繼續(xù)-------------------------------------------------

1? 現(xiàn)在我們編寫一個(gè)first.txt 文件,并把該文件提交修改到git版本庫

# 把要提交的文件添加到版本庫

git add 文件名

# 把要提交的文件提交到版本庫

git commit -m "本次提交的說明"

我們再次對(duì)文件進(jìn)行修改??

#查詢工作區(qū)和版本庫的文件狀態(tài),紅色的代表修改后的文件在工作區(qū),沒有添加到暫存區(qū)或者提交

#我們來 把剛才的修改后的文件添加和提交一下


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

# 查看我們提交的歷史記錄

git log 或 git log --pretty=oneline

git log --pretty=oneline 這個(gè)命令讓每次提交信息都在一行顯示 更清晰直觀? 前面一串字母和數(shù)字代表了每次提交的id號(hào),我們可以根據(jù)id 和提交信息找到對(duì)應(yīng)的文件版本,是不是很方便呢

再修改提交幾次

next 就是怎么找回以前版本-----驚喜在下面!?。。?!

> 3. 版本回退

# 把版本回退到前面的版本 當(dāng)前版本 HEAD 上一個(gè)版本HEAD^ 往上100個(gè)版本 HEAD~100

git reset --hard HEAD^

當(dāng)前版本查詢(fourth commit)

上一版本查詢(second commit)

......

> 4. 查看自己的每一次命令的記錄

# 如果回退到某一個(gè)版本之后又后悔了,那么可以再回到某一次提交,這時(shí)可以查看自己的寫過的命令

git reflog (可以看到全部的提交信息,及版本回退記錄)

這時(shí)候根據(jù)id和提交信息就可以輕松找回你需要的那個(gè)版本了

> 5. 回到某一次的提交

# 回到某一次提交就要找到某一次提交的id ,使用fit reflog可以查看自己的命令id

git reset --hard id號(hào)(比如找回第四次提交的版本)git reset --hard 第四次提交版本的id號(hào),這樣當(dāng)前版本就是第四次提交的版本啦


## 撤銷修改

> 1.當(dāng)你改亂了工作區(qū)某個(gè)文件的內(nèi)容,想直接丟棄工作區(qū)的修改時(shí)

命令: git checkout -- file

> 2.當(dāng)你不但改亂了工作區(qū)某個(gè)文件的內(nèi)容,還添加到了暫存區(qū)時(shí),想丟棄修改

1. git reset HEAD file

2. git checkout -- file

## 刪除文件

> 1.確實(shí)要?jiǎng)h除

git rm? 文件名? 把文件刪掉

通過git 和 commit 操作的文件 如果在文件夾中 自己手動(dòng)刪除 Git是能跟蹤到的

使用 git status

> 2.刪錯(cuò)了

git checkout -- files

注意:命令git rm用于刪除一個(gè)文件。如果一個(gè)文件已經(jīng)被提交到版本庫,那么你永遠(yuǎn)不用擔(dān)心誤刪,但是要小心,你只能恢復(fù)文件到最新版本,你會(huì)丟失最近一次提交后你修改的內(nèi)容

現(xiàn)在你可能遇到了兩種情況:

1 在git commit 之前 那么就用git checkout -- .\rewrite.txt 撤銷

2 如果在git commit之后 那么就用git reset -- hard id 就可以回退到你刪除的這個(gè)文件版本下



## 創(chuàng)建與合并分支

> 1.查看分支

git branch

> 2.創(chuàng)建分支

git branch 分支名字

> 3.切換分支

git checkout 分支名字


> 4.合并某分支到當(dāng)前分支

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

> 5.刪除分支

git branch -d 分支名字

> 6.當(dāng)git上面的地址發(fā)生變化:


## 解決沖突

出現(xiàn)沖突

1 在主分支上有一個(gè)文件 confit.txt

2 然后新建一個(gè)分支queen

3 切換到新分支

4 在這個(gè)新分支上建一個(gè)文件 confit.txt

5 更改文件的內(nèi)容 在新分支上提交

6 切換分支到主分支 ,修改confit.txt(和在新分支上修改同一行)

7 提交

8 合并分支,即出現(xiàn)了沖突


解決方案:商量保留誰提交的內(nèi)容,然后手動(dòng)刪除被舍棄的內(nèi)容,最后執(zhí)行添加并修改


##bug分支

情景:undong.txt 工作還沒做完(暫存區(qū)有很多add文件,這時(shí)還沒有commit),這時(shí)接收到一個(gè)必須在兩小時(shí)內(nèi)完成的bug文件(和之前的工作無關(guān))

1 這時(shí)就要保存工作現(xiàn)場 git stash

2 添加新分支 git branch fixbug

3 切換到這個(gè)分支 git checkout fixbug

4 git add bug文件

5 提交 git commit

6 刪除該分支(一般情況應(yīng)該合并)

查看分支現(xiàn)場 git

7 修復(fù)之前的分支 git stash pop


分類:?HTML/CSS

轉(zhuǎn)載:https://www.cnblogs.com/queen-live/p/7806138.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容