git使用教程(提交,遠(yuǎn)程,分支,回退,回滾,克隆,忽略)

1.git的安裝

網(wǎng)站下載git,一路回車安裝,安裝好后點(diǎn)擊鼠標(biāo)右鍵會(huì)有Git bash here ,點(diǎn)擊Git bash here命令行輸入git --version會(huì)有g(shù)it的版本信息。

2.git版本管理的基本操作

git ?init 建立本地git repository倉庫并對(duì)文件進(jìn)行追蹤用

git ?status ?查看狀態(tài)

git ?add . / git ?add -A ?這兩個(gè)命令是全部添加到暫存區(qū),也可以添加指定文件到暫存區(qū) git add index.html

git ?commit ?-m"對(duì)這次提交的描述" ? ,這樣就將修改提交到本地的 repository倉庫中, 描述就是為了方便后期再次查看時(shí)好理解

git remote add origin? https://github.com/***/ch1701.git ? ?把本地的倉庫和gitHub倉庫想關(guān)聯(lián)

git ? pull ?origin ?master ? ? ? ?從gitHub倉庫的master分支拉取代碼到本地

git? pull origin master? ? ??--allow-unrelated-histories? ? ? ? ?//強(qiáng)制拉取線上到本地合并()

git ?push ?-u ?origin ?master ? ? 提交到gitHub倉庫的master分支,第一次的時(shí)候需要 -u 參數(shù),后面再提交就不需要 -u 了

git ?push ?-u ?origin ?master? -f? ? ? //強(qiáng)制把本地推到線上覆蓋(當(dāng)回退線上倉庫時(shí)會(huì)用到)

git? cat? help.txt ? ? ? ? 查看內(nèi)容

git ?rm ? help.txt ? ? ? ? 刪除help.txt文件

reset ? ?清屏,實(shí)質(zhì)是清除屏幕記錄; ctrl ?+ ?l ?也是清屏,實(shí)質(zhì)是把記錄上移,以確保當(dāng)前顯示框干凈

git? diff? ?help.text? 查看當(dāng)前版本與上個(gè)版本的不同

git? config? user.name? ? ? ? ? 查看當(dāng)前用戶名

git? ?config? ?user.email? ? ? ? 查看當(dāng)前郵箱

npm? ?cache? ?clean? ?--force? ? ? ?清除緩存

git? rm? -r? --cached .? ?? 清除git緩存

git? config? ?--global? ?core.ignorecase? ?false? ? ? ?設(shè)置git區(qū)分大小寫

至于上文中的gitHub倉庫的來源,直接去github網(wǎng)站上注冊(cè)一個(gè)賬號(hào),點(diǎn)右上角加號(hào)new repository,然后取個(gè)名字回車就好了

3.分支操作

創(chuàng)建本地分支: ?git ?branch ?aaa ? ?,這里aaa為新建的分支名字

創(chuàng)建分支并切換到新分支: ?git? checkout? ?-b? ?aaa ? ?,這里aaa為新建的分支名字

查看本地分支:git ?branch ? ? ? ? ?不給參數(shù)默認(rèn)本地分支

合并分支:? ?git? ?merge? ?aaa? ? ? (想把a(bǔ)aa分支合并到master分支,要先切換到master分支再執(zhí)行合并操作)

放棄分支合并:? ?git? ?merge? ?–abord? ? aaa

查看遠(yuǎn)程分支:git? branch? -r? ? ? ,r代表remote即遠(yuǎn)程分支

查看所有分支:git? branch? -a ? ? ?,a代表all即所有分支

切換分支:git ?checkout ? aaa ? ,從master分支切換到aaa分支? ? ? (切換分支前確保當(dāng)前分支的修改都已提交)

創(chuàng)建遠(yuǎn)程分支 / 推送新分支放到遠(yuǎn)程:git ?push ?origin ?aaa ? ? ,會(huì)自動(dòng) 在遠(yuǎn)程添加aaa分支

刪除本地分支:git ?branch? -d ? aaa ? ?刪除aaa分支前確保切換到非aaa分支上再執(zhí)行此命令

刪除遠(yuǎn)程分支:git? push? origin? :aaa? (origin 后面有空格)

刪除遠(yuǎn)程分支:? $ git? push? origin? --delete? aaa

當(dāng)頁面內(nèi)容很多時(shí),可以用按 f 鍵下一頁,按 b 鍵上一頁,:wq是退出當(dāng)前

4.查看提交記錄操作

git ?log ? ?查看詳細(xì)提交日志,按f鍵想下翻頁,按b鍵向上翻頁,按q退出

git ?log ?--oneline ? ? 顯示只有一行的簡單提交日志

git? log? --oneline ? -6 ? ? 顯示最近的6條提交日志

git? log? --oneline? --author="hu" ? ?顯示指定作者的提交日志

git? log? --oneline? --grep="index.html"? ? 顯示index.html的提交日志

git? log? --oneline? --before='2017-07-20'? ? 顯示2017-07-20日期之前(包含這一天)的提交日志

git? log? --oneline? --before='3 days'? ? 顯示最近3天的提交日志

git? log? --oneline? --before='1 weeks'? ? 顯示最近1周的提交日志

git? log? --oneline ?--graph ? ? 顯示帶圖形效果的提交日志

當(dāng)回滾、回退后會(huì)看不到當(dāng)前版本后的提交記錄,這時(shí)可以執(zhí)行 git ?reflog 這個(gè)命令會(huì)記錄每一次操作記錄? ?

5.checkout操作 (回退版本方法一)

對(duì)于在工作區(qū)(未加入暫存區(qū))的修改,想要放棄修改使用這個(gè)方法:

git checkout . ?撤銷對(duì)所有已修改但未放入暫存區(qū)的文件的修改,但不包括新增的文件

git ?checkout ?-- . ? ?同上

git checkout ?[filename] ? ?撤銷對(duì)指定文件的修改,[filename]為文件名

git ?checkout ?-- ?[filename] ? ? 同上

對(duì)于已經(jīng)git ?add 加入暫存區(qū)的文件想要放棄修改的話需要這樣操作:

? ? git? reset? HEAD? index.html? ? 可以把暫存區(qū)的修改撤銷掉,重新放回工作區(qū),然后就回到上面的那個(gè)方法了

對(duì)于已經(jīng)commit 的文件,如果想要回退就要使用以下這個(gè)方法:

? ? 先git ?log ?--oneline ?查看提交信息

git ?log --oneline

? ? git? checkout? a9db330? ? 會(huì)回退到測試2的提交,并創(chuàng)建一個(gè)臨時(shí)分支放測試2節(jié)點(diǎn)的代碼,此時(shí)輸入git? branch? 可以看到分支在臨時(shí)分支上,本地代碼也變回測試2的。如果又想回到最近的那次提交只需要切換回主分支master就好了,執(zhí)行git ?checkout ?master ,本地代碼會(huì)變回最新的提交版本測試4的狀態(tài),同時(shí)臨時(shí)分支會(huì)消失。如果想保存測試2那個(gè)分支,那就在切換master分之前新建一個(gè)分支執(zhí)行git ?checkout ?-b ? aaa,再執(zhí)行git ?branch會(huì)發(fā)現(xiàn)臨時(shí)分支也不見了,只有master和aaa,其中master是最新測試的狀態(tài),aaa就是測試2的狀態(tài)。如下圖:

只查看會(huì)退的版本,臨時(shí)分支不保存
查看回退的版本,并新建分支保存臨時(shí)分支

注意: ?

這里需要注意一點(diǎn),當(dāng)回退到測試版本2后,測試版本2后的提交記錄都會(huì)不見的,我們就不能通過git? log找到測試版本4的commit_id了,我們可以用 git? reflog查看每一次操作的記錄找到測試版本4的commit_id 。想要回到最近的一次提交測試4只需要切換到master分支就好了,如下圖。

回退后的git ?log ?--oneline
回退后git ? reflog

6.reset操作 (回退版本方法二)

先git? log? --oneline? 查看提交信息

git ?log ? --oneline

執(zhí)行git? reset? --hard ?HEAD^ ? ?會(huì)回退到最近的提交版本的前一個(gè)版本(3065b27)

執(zhí)行git? reset? --hard? HEAD^? ? 會(huì)回退到最近的提交版本的前兩個(gè)版本(3065b27)

執(zhí)行git? reset? --hard? HEAD~20 ??會(huì)回退到最近的提交版本的前20個(gè)版本

也可以根據(jù)提交的commit_id來回退:

執(zhí)行 git ? reset ?--hard ?a9db330 ? ?, ?a9db330是通過git ?log查看到的額測試2提交的commit_id

git ?reset ?--hard ?a9db330

這里需要注意的是:執(zhí)行此方法后不會(huì)像checkout那樣新建一個(gè)臨時(shí)分支,而是直接把本地的代碼會(huì)退到指定的版本,如果回退完后又想返回最新版本,執(zhí)行 git? reset? --hard? commit_id4, 這里的commit_id4是最新提交版本的id, 可以在回退之前截個(gè)圖保存下來,或者通過?git? reflog 查看。當(dāng)回退到測試版本2后,測試版本2后的提交記錄都會(huì)不見的,我們就不能通過git? log找到測試版本4的commit_id了,這時(shí)候又想回到測試提交4的版本怎么辦,我們就可以用 git? reflog查看每一次操作的記錄找到測試版本4的commit_id4然后再 git? reset? --hard? commit_id4 就又回到最新的提交版本

回退版本后又返回最新的版本

7.remote操作

git? remote? 查看遠(yuǎn)程分支(沒有改動(dòng)的話默認(rèn)是master)

git ?remote ?-v ? ?查看git遠(yuǎn)程倉庫地址

修改遠(yuǎn)程倉庫地址:

? 1.修改命令

? ? ? git ?remote? ?set-url? ? origin? ? [url]

? 2.先刪后加

? ? ? git remote rm origin

? ? ? git remote add origin [url]

git? remote? -v

8.clone 克隆

把git倉庫的代碼克隆到本地,只需要執(zhí)行 ? ?

git? clone ? https://github.com/×××.git ? ? ?這樣會(huì)在當(dāng)前目錄下建立一個(gè)跟git倉庫同名的文件夾,文件夾里是代碼

git? clone? https://github.com/×××.git? ? test ? ?,這樣會(huì)在當(dāng)前目錄下新建一個(gè)test文件夾用來放git遠(yuǎn)程代碼 ?

9.gitignore 忽略

在我們使用github提交本地代碼時(shí),有些庫文件和日志文件是不必要提交的,這個(gè)時(shí)候我們就會(huì)用到.gitignore文件了。

首先,.gitignore文件應(yīng)該是創(chuàng)建在你的項(xiàng)目的根目錄下面的,執(zhí)行命令創(chuàng)建 .gitignore文件,也可以直接在文件管理中去創(chuàng)建

vim .gitignore

或者? ? touch? .gitignore

添加忽略的目錄和文件:

node_modules/? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//該文件下所有文件

dist/

.project? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//所有以.project結(jié)尾的文件

*.log? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??//所有以.project結(jié)尾的文件

!aaa.log? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //不過濾aaa.log文件,該文件會(huì)被提交到線上倉庫

platforms/

plugins/

這些文件都是庫文件以及自動(dòng)生成的模塊,都是不必要提交的。

對(duì)于已經(jīng)提交,現(xiàn)在又不想提交的文件(不想讓它出現(xiàn)在遠(yuǎn)程版本庫里),應(yīng)該這樣操作:

? ? ?去項(xiàng)目根目錄下創(chuàng)建.gitignore文件,并且添加需要忽略提交的文件(方法同上),然后執(zhí)行

git? rm? -r? --cached? node_modules ? ? ? ? ? ? ? ? ? ?(node_modules為要?jiǎng)h除的文件名)

? ? ? 然后再 push 到遠(yuǎn)程,這時(shí)去github的庫里去就會(huì)發(fā)現(xiàn)剛剛刪除的東西不見了

如果gitignore不生效,執(zhí)行以下代碼清理git緩存

git rm -r --cached .

git add .

git commit -m 'update .gitignore'


10.git bash here窗口與cmd窗口的基本命令(windows)

基本命令
git?bash基本命令

以上都是我平時(shí)遇到的,我總結(jié)了一下寫了出來,方便大家查看。這只是一部分,還有很多等我想起來了再往上添加。

文中如果有寫錯(cuò)或不對(duì)的地方懇請(qǐng)您留言指出批評(píng),如果此文對(duì)你有幫助,請(qǐng)加關(guān)注收藏點(diǎn)贊。

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

相關(guān)閱讀更多精彩內(nèi)容

  • git作為時(shí)下最流行的代碼管理工具,Git權(quán)威指南總結(jié)了十條喜歡Git的理由: 異地協(xié)同工作; 現(xiàn)場版本控制; 重...
    古斟布衣閱讀 1,908評(píng)論 0 12
  • 在雨中拾一首詩,在詩中流淚 在詩中,走過結(jié)滿梅子的青澀雨巷 偶爾,有幾句會(huì)非常陽光 陽光得有點(diǎn)象雨過天晴。 但雨天...
    金永輝煌閱讀 976評(píng)論 4 16
  • 440王金偉寫作思路 “仔細(xì)看了三遍之后,當(dāng)我想清楚我的目標(biāo)是什么,我有可能給予什么之后,我選擇進(jìn)來,一是我對(duì)您關(guān)...
    木頭的隨筆閱讀 310評(píng)論 0 0
  • 噩運(yùn)會(huì)來,那么噩運(yùn)會(huì)去,但在噩運(yùn)中喪失了品格,事事無行,卒為親師儔友所不齒,待到噩運(yùn)過后,又能如何呢,不甘寂寞,找...
    obstinate_lzy閱讀 324評(píng)論 0 0

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