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? 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)。如下圖:


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


6.reset操作 (回退版本方法二)
先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

這里需要注意的是:執(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]

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)


以上都是我平時(shí)遇到的,我總結(jié)了一下寫了出來,方便大家查看。這只是一部分,還有很多等我想起來了再往上添加。
文中如果有寫錯(cuò)或不對(duì)的地方懇請(qǐng)您留言指出批評(píng),如果此文對(duì)你有幫助,請(qǐng)加關(guān)注收藏點(diǎn)贊。