GitHub指令大全及操作教程

一、簡述SVN與GIT區別
SVN:集中式 GIT:分佈式
1.SVN:
(1)特點:所有的歷史版本都是在中央服務器端上建立的,本地客戶端只是一個開發的環境,開發完需要推到服務器上生成歷史版本,需要回退到某個版本,也需要從中央服務器上拉取
(2)缺點:必須連接上中央服務器纔可以(必須連網)

(3)工作示意圖
在這裏插入圖片描述
2.GIT
(1)概念:所謂分佈式,就是每個開發者的本地客戶端都是一個完整的倉庫,都能記錄歷史版本信息
(2)特點:可以不需要連網,我們也能生成版本記錄,也可以快速回退到某個版本
(3)工作示意圖
在這裏插入圖片描述
3.SVN與GIT區別
(1)集中式只能在中央服務器上記錄版本信息,也只能在中央服務器拉取或回退某個版本的信息,這樣的前提必須要保證客戶端與中央服務器保持連接,必須要連網,而分佈式它是把每一個客戶端都作爲一個全新的單獨的倉庫,在本地客戶點就可以完成版本的創建和回退,可以不需要中央服務器,當然團隊合作需要中央服務器,把所有人的信息集中到中央服務器上,只要把中央服務器的最新版本拉取到本地,想看就可以直接看或回退版本,他不需要連網
(2)Git是按照源數據(文件流)來實現文件傳輸的,而svn是按照文件傳輸的,所以GIT比svn更快

二、常用指令
注:GIT是linux團隊開發的,所以git中的命令大部分都是linux命令
1.先安裝GitHub
(1)下載:https://git-scm.com/downloads
(2)安裝時默認下一步即可
(3)完成安裝,檢查是否按照成功有兩個方法:
可輸入git --version檢查版本信息
或者
桌面有鍵看是否有 (如圖紅色框的顯示),有即可安裝成功在這裏插入圖片描述
2.基於命令來完成GIT管理
基礎命令
如何配置名字、eamil?
$git config --gloabal user,name 'xxx' //設置名字
$git config --gloabal user.eamil 'xxx' //郵箱

ls -l或者ls -a :查看文件目錄

-l: 查看當前目錄結構 -a:是可以看見所有的:包含隱藏的

cd xxx[路徑地址]:進入到指定的文件中(進入的地址可以到對應的操作命令窗口中)

 cd / :表示根目錄    cd ./ :切換到當前目錄   cd ../ :切換到上級目錄

clear:清屏
mkdir:創建文件夾

mkdir text   //創建text文件

touch:創建空文件 再用vi插入

  touch 1.js  創建了1.js文件

vi:向文件中插入或者管理一些內容,再按 i=>進入到插入模式。
ESC+ :WQ :退出內容的插入模式,把剛纔的編輯的內容進行保存 ESC+ :q!: 強制退出,當前內容不保存
(一般vi,i ,ESC(就是鍵盤上的esc退出鍵),:wq或者:q都是連用的,因爲vi就是插入一些內容,i是插入模式,在插入模式下才可以輸入內容,插入完成後就會保存,退出)

 舉例:如vi 1.js 回車 再按i 顯示--插入模式-- 然後寫點東西  let a=12; let b=13;conslog(a); 再然後保存:按 i 後 再按esc(退出插入模式)再輸入:wq(保存並退出)

echo :向指定的文件中輸入(插入)內容,也會順便創建文件
(特點:會覆蓋 重複輸入她只保存最新的一條信息)

語法:echo xxx > xxx.txt 或者 echo xxx>>xxx.txt

如:echo 哈哈哈 >2.js //把哈哈哈輸入到2.js裏面
cat :查看文件中的內容

想查看1.js的內容  :輸入 cat 1.js 即可

rm :刪除文件或者文件夾
-r 遞歸刪除 -f 強制刪除,一旦刪除無法還原
rm * :刪除所有
rm *.js :刪除所有的js
rm node_module -rf: //刪除node_module,因爲裏面有很多文件 所以-r 還可以強制刪除,就-rf
cp: 拷貝
高級命令
$git init :創建GIT倉庫
$git add -A 或者git add . :把當前工作區修改的內容全部提交到暫存區(可以指定具體提交的文件 $ git add xxx.js)
$ git commit -m'寫版本備註':把暫存區中的內容提交到歷史區,生成一個歷史版本(我們需要寫備註信息,聲明當前版本的特點)
$ git status 查看當前修改的文件處於哪一個區域 查看版本,對比信息(情況如下:)
紅色:工作區
綠色:暫存區
看不見:已經提交到歷史區,三區保持一致了

$git rm --cached xxx.xx :刪除當中的某一個
$ git rm --cached . -r :撤銷暫存區中所有提交的
(如果刪除過程中,發現從暫存區刪除的文件,在工作區已經被修改了,只有加上 -f 才能強制從暫存區把內容刪除掉)
$git checkout xxx.xx:提交到暫存區一份,把工作區內容改了,但是改的東西不好,想把暫存區上次提交的內容撤銷回到工作區(覆蓋工作區新寫的內容)
特點:暫存區內容沒有消息,只是把工作區最新修改的信息給覆蓋了,讓工作區和暫存區保持一致
$git diff <file> :查看文件DIFF
(比較當前文件與暫存區的文件差異)

 git diff 1.js //比較1.js的不同

git checkout . :代碼回滾 (把暫存區內容回滾到工作區(一旦回滾,工作區內容無法恢復))
git reset HEAD . :把當前暫存區的內容回滾到生一個暫存區,目的是爲了把上一個暫存區內容回滾到工作區
git reset --hard 版本號 :在歷史區中間退到某個版本(強制把暫存區和工作區都變回退後的版本)
history > xxx.txt :把歷史操作步驟輸出

git log 查看提交記錄
git reflog 查看所有的歷史記錄(包括歷史區回滾後)
git commit 提交到歷史區
git commit -m'xxx' 提交到歷史區
三、GitHub的基礎工作流程及命令
我們都知道每一個GIT倉庫都有三個區:
工作區:寫代碼
暫存區:臨時存放每一次修改的代碼。但是並沒有生成歷史版本
歷史區:存放所有歷史版本的地方
那麼工作流程到底是怎麼樣的呢,從無到有的過程 如下:
基本流程:
1)首先創建中央倉庫
打開github官網,登錄後,先create repository(創建新倉庫)
在這裏插入圖片描述
完成創建,如果是新創建的庫,可以先使用一下命令先創建個非空倉庫(目的是保證:中央倉庫有一個master分支)

echo "# mytest" >> README.md  //添加個記錄
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/MNLNG/mytest.git
git push -u origin master 

如果已經有中央倉庫了那就不用上述操作直接克隆下來就行
2)創建客戶端本地倉庫也就是克隆中央倉庫的代碼
$git clone "遠程倉庫地址" "本地倉庫文件夾名字 :(不寫默認是·倉庫名字)"

如 $ git clone https://github.com/xxx/2020xxx.git TEST 

下面是一個客戶端從克隆代碼到添加文件,提交,修改,上傳到中央倉庫的完整過程
(1).先克隆 兩個客戶端 A 、B

git clone https://github.com/zhufengpeixun/201802TEST.git TESTA
git clone https://github.com/zhufengpeixun/201802TEST.git TESTB

(2)再在TESTA裏面創建文件及內容1.txt TESTB裏面創建文件及內容2.txt
(3)cd 到對應客戶端目錄

cd TESTA 

(4)提交客戶端創建的文件

提交前先添加文件

git add .

然後提交

git commit -m'我是A客戶端 創建1.txt'

可以查看一下版本

$git log

(5)然後推送,推送前先pull一下

git pull origin master 

然後再提交到遠程上

 git push origin master 

(6)各自和中央服務器同步信息

git pull origin master

好了完成哦,是不是很簡單,哈哈!

四、提交時可忽略的文件
如##dependencies

 /node_modules

##testing

 /coverage

##production

/build

##misc

.DS_Store 
.env.local .env.development
.env.test .local  
.local  .env.production .local 
npm-debug.log*

yran-debug.log*

yran-error.log* 

.idea

五、團隊協作和分支管理
一般在團隊中,小項目可能都會採用無分支管理模式,比較簡單,其實一般一個分支的管理就足夠了,不過也有公司大項目使用多分支來管理,那麼就這些情況做一些解析
分支指的是歷史區的分支:創建分支就是創建不同的線路,來管理歷史版本
(一)無分支管理模式
1.每天工作模式:
第一先pull下來,如果有衝突先處理,然後再把文件add ,commit ,再pull 和push (這裏的命令我忽略了 git …的縮寫,執行時自己加上就行)
2解決衝突
-非同一行衝突:在提示的衝突命令中同意即可ESC :wq (按下ENTER鍵即可),如果本地和中央的想要保留中央的那就esc :q強制退出
-同一行衝突:
把想要的保留下來:嘗試合併失敗,我們需要手動把代碼進行合併然後再重新提交
不想保存下來那就esc :q強制退出保留中央倉庫的代碼
(二)單獨分支模式
1.正常的開發和提交,但是所有的操作都是在自己的分支上
2.把自己本地的分支中的內容,合併到自己本地master分支上
$git stash //暫存文件 (分支由更改,不能直接切換分支,需要把修改的內容暫存),
$git checkout master //切換到master分上
$git stash pop //還原暫時存儲的內容
$git merge dev //把dev分支合併到master分支上(有衝突就按照之前的衝突規則修改)
注:這些操作是當工作區和暫存區還沒有提交到歷史版本時,我們實現分支切換防止信息丟失我們先用git stash暫時把他存起來,切換到master時再git stash pop 把之前的暫存的數據還原回來,再把dev 分支合併到master分支上,如果已經提交歷史版本,那就不需要暫存,可以直接合並

合併:如果當前是在master分支上寫下git merge dev //代表dev合併到master分支上
如果當前在dev分支上,寫上git merge dev1 //代表dev1合併到dev分支上

2.創建分支到合併分支的步驟
在創建之前先看看當前存在的分支
$git branch 查看當前存在的分支

  • master "*"代表當前在哪個分支上
    在這裏插入圖片描述
    上圖代表有兩個分支
    (1)先創建分支
    git branch dev 創建一個叫做dev的分支
    (特點:創建新分支完成,會把本地的master分支中的內容同步到dev分支上)
    git checkout dev 切換到dev分支上
    git checkout -b dev 創建並切換到這個分支
    (2)完成分支後,提交推送到中央倉庫
    git add . -》git commit -m’備註’ -》git pull origin master -》git push origin master
    (3)然後再切換分支,暫存(stash),合併(merge)
    先切換到master分支上再合併
    $git checkout master //切換到master分上
    $git stash pop //還原暫時存儲的內容
    $git merge dev //把dev分支合併到master分支上
    如一些衝突
    在這裏插入圖片描述
    解決思路:先按 esc :wq 再重新push
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章