1)基本資訊設定及檢視
Git安裝完成後,需要進行一些基本設定。
作用:區分不同開發人員的身份。
辨析:這裡設定的簽名和登入遠端庫(代碼托管中心)的賬号、密碼沒有任何關系。
//項目級别/倉庫級别:僅在目前本地倉庫範圍内有效
$ git config user.name 'userName' //設定使用者名
$ git config user.email '[email protected]' //設定使用者郵箱
$ cat .git/config //檢視目前項目設定
//系統使用者級别:登入目前作業系統的使用者範圍
$ git config --global user.name 'userName' //設定使用者名
$ git config --global user.email '[email protected]' //設定使用者郵箱
$ cat ~/.gitconfig //檢視系統級别設定
級别優先級:項目級别優先于系統使用者級别,二者都有事采用項目級别
2)基礎操作
$ cd:e // 切換盤符
$ cd .. // 回到檔案上一層(注: cd與..中間有個空格)
$ cd ~ // 回到目前目錄的主目錄
$ mkdir dir // 建立檔案夾
$ touch fileName // 建立檔案
$ vi fileName // 使用vim編輯器,編輯檔案
$ press i button // 開始進入編輯狀态
$ press the Esc button // 退出vim編輯區
$ :wq // 退出編輯狀态, 回到指令視窗
$ cat fileName //檢視檔案的内容
$ ll [dir] //檢視目前或者指定檔案夾内容(詳細内容)
$ ls [dir] //檢視目前或指定檔案夾内容(縮略内容)
$ ls -la [dir] //檢視目前或指定檔案夾的所有内容(包括隐藏内容)
$ touch fileName //建立一個檔案
$ rm fileName //删除工作區檔案
$ pwd //顯示目前路徑/e/Git/learngit
$ git config --list //檢視全局配置設定
$ git init // 初始化一個空的Git倉庫,将目前目錄變成一個Git可以管理的倉庫
$ git add fileName... // 将工作區的“建立/修改”添加到暫存區域;并進行追蹤
$ git rm fileName //删除檔案(隻删除工作目錄和暫存區域),也就是取消跟蹤,下次送出不納入版本管理
$ git rm -m fileName //當工作目錄和暫存區域的同一個檔案存在不同的内容時,則删除兩個區域的檔案
$ git rm --cached fileName //将暫存區域的檔案移除(保留工作目錄)
$ git {ren|mv} fileName1 fileName2 //重命名檔案,不同系統指令不同ren、mv
$ git commit -m "送出描述" [fileName] // 将暫存區的内容送出到本地倉庫(把暫存區的所有内容送出到目前分支)
$ git status //檢視工作區和暫存區的狀态(倉庫下的工作區檔案是否被修改過)
//檢視曆史記
//多屏顯示控制方式: 空格向下翻頁,b 向上翻頁,q 退出;
$ git log //檢視Git倉庫曆史送出的快照
$ git log --pretty=oneline //以簡潔的方式顯示
$ git log --oneline //以更簡潔的方式顯示
$ git reflog //檢視每一次指令記錄曆史,確定能回到任意版本;HEAD@{移動到目前版本需要多少步}
3)回到過去
$ git reset 快照ID //将本地庫中某個快照還原到暫存區,預設為 --mixed HEAD
$ git reset 快照ID 檔案名/路徑 //還原某一個快照中的檔案。HEAD指針不會改變
//reset指令的三個參數,預設為--mixed
$ git reset --soft HEAD~ //僅僅在本地庫移動HEAD指針;
$ git reset --mixed HEAD~ //改在本地庫移動HEAD指針,重置暫存區;
$ git reset --hard HEAD~ //在本地庫移動HEAD指針,重置暫存區,重置工作區
$ git reset HEAD^ //一個^表示後退一步,n個^表示後退n步;隻能後退
$ git reset HEAD~n //表示後退n步;隻能後退
$ git checkout -- 檔案名 //用于把暫存區域的檔案還原到工作目錄
4)版本對比
$ git diff //将工作區和暫存區的内容進行比較;
$ git diff [快照ID/fileName...] //将工作區和暫存區的快照或檔案進行比較;
$ git diff --cached //将暫存區和本地倉庫最新送出的快照進行比較
$ git diff --cached [快照ID/fileName...] //将暫存區和本地倉庫的某個快照進行比較
$ git diff [快照ID1/fileName...] [快照ID2/fileName...] //比較兩個指定快照或檔案的内容;
5)分支管理
在版本控制過程中,使用多條分支同時推送多個任務。
● 分支的好處:
① 同時并行推進多個功能開發,提高開發效率;
② 各個分支在開發過程中,如果某一分支開發失敗,不會對其他分支有任何影響,失敗的分支重新開始即可。
$ git log --graph //檢視分支合并圖
$ git log --graph --pretty=oneline --abbrev-commit // 檢視分支合并縮略圖
$ git branch //檢視所有分支(目前分支以‘*’标記)
$ git branch -v //檢視所有分支 - 簡介
$ git branch 分支名 //建立分支
$ git branch -d 分支名 //删除分支,沒有合并到master分支為前提
$ git checkout 分支名 //切換分支
$ git checkout -b 分支名 //建立分支并切換到該分支
$ git checkout HEAD~ //建立匿名分支,在某一個指定快照上建立一個匿名分支,在切換分支後該分支的任何操作都會丢棄掉,;一般用來做一些實驗
$ git merge 分支名 //合并分支到目前分支上
$ git merge --no-ff -m "注釋" 分支名 //合并後的分支有曆史記錄,而Fast-Forward合并之後,分支沒有曆史記錄
$ git rebase //将本地未推送的分支送出整理成直線,利于檢視
//Bug分支
$ git stash //隐藏分支工作現場,為修複bug準備
$ git stash list //檢視有哪些分支隐藏的工作現場,為恢複工作現場做準備
$ git stash apply //恢複工作現場,但不删除存儲的stash内容,結合git stash drop進行删除
$ git stash drop //删除存儲的stash内容,恢複到隐藏前的工作現場
$ git stash pop //恢複到隐藏前的工作現場,相當于git stash apply和git stash drop
$ git stash apply stash@{0} //可以多次stash,通過git stash list檢視所有的stash,然後可以恢複到指定的隐藏的工作現場
● 解決合并分支時的沖突:
沖突表現:當兩個分支的同一個檔案名的内容不相同的時候進行合并會産生沖突。

●沖突解決:
① 編輯檔案,删除特殊符号;
② 修改檔案到滿意的程度,儲存退出;
③ git add 檔案名;
④ git commit -m "日志資訊",此時git不能帶檔案名;
6)遠端倉庫操作
$ git remote -v //檢視目前所有遠端位址别名
$ git remote add [别名] [遠端位址] //關聯一個遠端倉庫,一般别名為origin
$ git remote rm [别名] //删除一個遠端倉庫
$ git push -u [别名] [分支名] //第一次推送本地庫的内容需要參數 -u ;
$ git push [别名] [分支名] //推送本地分支到遠端庫分支(時刻保持同步)
$ git push -f -u [别名] [分支名] //推送某個曆史版本
//!當推送的版本不是基于GitHub遠端庫所做的修改,不能推送,必須先拉取。當發生了沖突時,編輯沖突檔案,添加到緩存區然後送出,再次執行推送。
$ git pull [别名] [分支名] //将遠端庫分支的最新版本拉取下來;pull=fetch+merge
$ git pull --rebase [别名] [分支名] //拉取最新的分支下來進行合并;pull --rebase=fetch+rebase
$ git clone [遠端位址] //位址可以使用Https或者SSH方式進行克隆;效果:① 初始化本地庫;② 建立origin遠端位址别名;③ 把遠端庫下載下傳到本地;
$ git checkout -b [本地分支名] [遠端分支名] //在本地建立和遠端分支對應的分支
$ git branch --set-upstream-to=[遠端分支名] [本地分支名] //建立本地分支和遠端分支的關聯
注:如果遠端倉庫有README.md檔案,而本地倉庫沒有README.md檔案,此時可能會出現錯誤,應先進行合并檔案,再進行推送;合并檔案之後,此時再進行推送修改到遠端倉庫即可。
推送沖突:如果不是基于 GitHub 遠端庫的最新版所做的修改,不能推送,必須先拉取;拉取下來後如果進入沖突狀态,則按照“分支沖突解決”操作解決即可。
SSH免密登入:設定SSH推送方式
//進入目前使用者的家目錄
$ cd ~ 删除.ssh 目錄
$ rm -rvf .ssh
//運作指令生成.ssh 密鑰目錄;參數-C為大寫
$ ssh-keygen -t rsa -C [email protected]
//進入.ssh 目錄檢視檔案清單
$ cd .ssh
$ ls -lF
//檢視 id_rsa.pub 檔案内容
$ cat id_rsa.pub
/*複制 id_rsa.pub 檔案内容,登入 GitHub,點選使用者頭像→Settings→SSH and GPG keys
New SSH Key
輸入複制的密鑰資訊*/
//回到 Git bash 建立遠端位址别名
$ git remote add [别名_ssh] [SSH遠端位址];别名一般為origin
//推送檔案到遠端倉庫
& git push origin_ssh 分支名
View Code