Git 命令總結,從零到熟悉

在這裏插入圖片描述


閱讀原文


什麼是 Git?

Git 是一個免費的開源分佈式版本控制系統,它的設計目的是爲了速度和效率的處理從小型到大型的項目;Git 能夠幫咱們管理咱們的代碼,記錄歷史,只要代碼提交到 Git 上就永久不會丟失,能夠隨時 「穿越」(回到以前的某一個版本);能夠多端共享,團隊協做中,多我的操做了同一個文件時,能夠實現自動合併(模塊化,組件化)、標記衝突,擁有強大的分支管理系統。html


Git 與 SVN 的區別

SVN:集中式,須要一臺中央服務器,全部代碼的拉取和提交都是在中央服務器,一旦中央服務器或者網絡出現故障,則不能拉取和提交代碼,須要不斷去備份中央服務器,防止代碼丟失。前端

Git:分佈式,有一箇中央服務器的同時,每一個開發者本地都有本身的本地倉庫,擁有完整的版本庫,不用擔憂代碼丟失,Git 存儲的是代碼變化的快照,更新代碼的速度要比 SVN 更快。node


Git 安裝

Windowsgit

Macgithub


Linux 命令

一、打印工做目錄

pwd

二、建立文件夾

mkdir 文件夾名

三、改變路徑

進入盤符:服務器

cd d:

進入文件夾:網絡

cd 文件夾名

回上一級目錄:app

cd ..

進入某一個路徑:編輯器

cd 路徑

想要進入某一個不知道路徑的文件夾中,能夠直接拖拽該文件到命令窗口,會自動識別路徑。

四、查看文件列表

ls

ls -al

下面命令加了 -al 參數能夠查看隱藏文件。

五、建立文件

touch 文件名

六、移動文件

mv 文件/文件夾 路徑

將文件或者文件夾移動到所輸入的路徑下。

七、查看文件內容

cat 文件名

八、刪除文件 / 文件夾

rm -rf 文件夾名

rm 文件名

-rf 爲遞歸刪除,後面加上 * 爲參數會遞歸刪除整個文件夾的內容,rm -rf *(慎用)。

九、清空命令窗口

clear

十、查看命令歷史

直接在命令行中查看:

history

將當前 Git 的命令歷史寫入文件中:

history > 文件名

十一、使用 vi 編輯器編輯文件

vi 文件名

進入編輯模式:

i

進入命令模式:

Esc

保存並退出:

:wq

強制退出:

:q!

十二、使用命令編輯文件

向文件輸入內容:

echo 內容 > 文件名

向文件追加內容:

echo 內容 >> 文件名

當使用 echo 編輯了一個不存在的文件時,會建立一個新文件並將內容編輯到文件中,而 touch 建立的是空文件。


Git 的本地操做

Git 在管理文件時,全部文件都具備三種狀態,已修改、已暫存、已提交。
Git 在本地倉庫中由三部分組成,工做區、暫存區、版本庫。
Git 管理的文件夾下都有一個名爲 .git 的隱藏文件夾。

對應關係以下:

  • 已修改 → 工做區
  • 已暫存 → 暫存區(.git 文件夾下的 index 文件中)
  • 已提交 → 版本庫

一、配置用戶

不配置用戶沒法提交代碼。

查看配置信息:

git config --list

配置用戶名:

git config --global user.name "你的名字"

配置郵箱:

git config --global user.email "你的郵箱"

二、初始化 Git 倉庫

在要初始化的文件夾下執行下面命令,告訴 Git 哪一個文件夾被 Git 所管理,一個項目初始化一次,不能嵌套。

git init

三、查看 Git 狀態

git status

文件爲紅色,表明有修改,文件名爲綠色,表明已經加入暫存區。

四、添加到暫存區

git add 文件名

git add .

git add -A

.-A 兩個參數均爲所有提交到暫存區,. 只監控修改、添加文件的變化,-A 監控修改、添加、刪除文件。

五、刪除暫存區

git rm --cached 文件名

git rm --cached . -r

第一個命令是刪除某一個文件的暫存區,當參數爲 . 的時候刪除所有暫存區,因此須要加上表明遞歸刪除的參數 -r

六、提交到版本庫

從暫存區提交到版本庫:

git commit -m "版本信息"

從工做區直接提交到版本庫(須要以前添加過暫存區):

git commit -a -m "版本信息"

七、查看提交日誌

git log

八、比較工做區、暫存區、版本庫

工做區和暫存區比較:

git diff

工做區和版本庫比較:

git diff 分支名

暫存區和版本庫比較:

git diff --cached

九、撤銷操做

git checkout 文件名

git checkout .

撤銷操做是將暫存區覆蓋到工做區,會放棄掉當前工做區修改的內容,. 參數是將整個暫存區覆蓋當前工做區,一旦撤銷就回不到以前的工做區了。
當不當心將當前工做區錯誤的代碼提交到暫存區,可使用下面命令將暫存區回滾到上一個暫存區,只可回滾一次。

git reset HEAD 文件名

十、回退版本

查看全部的版本號:

git reflog

按版本號回退版本:

git reset --hard 版本號

回退到上一個版本:

git reset --hard HEAD^

回退某一個版本的文件到工做區:

git checkout 版本號 文件名

回退版本會將當前版本庫選中的版本從新覆蓋暫存區和工做區。

十一、分支操做

查看分支:

git branch

Git 剛剛初始化管理的的文件夾必須有一次提交到版本庫(root-commit:根提交)之後纔會有主分支 master,不然即便建立了新分支也沒法切換回 master。

建立分支:

git branch 分支名

切換分支:

git checkout 分支名

建立並切換分支:

git checkout -b 分支名

刪除分支(需切換出要刪除的分支):

git branch -D 分支名

新建立的分支和主分支 master 仍是同一個區域,新建的文件只有提交到新分支的版本庫才真正脫離關係。
分支工做區有更改不能直接切換其餘分支,能夠提交更改或者暫存更改,若暫存更改(使用暫存區覆蓋掉工做區),等待從新切回分支時,還原暫存。
此處所說的暫存不是以前的將代碼提交到暫存區,由於當前分支工做區的代碼會變成要切換分支工做區的代碼,而致使當前分支工做區的更改丟失,此處的暫存相似於將修改寄存,從新切回該分支時再還原。

暫存更改:

git stash

還原暫存的內容:

git stash pop

合併分支:

將指定分支合併到當前所在的分支,因此,在分支開發完畢後,合併分支須要先切換回 master 主分支。

git merge 指定的分支名

查看分支合併的圖譜:

git log --graph

git log --graph --oneline

紅色線表明主分支,綠色線表明新建立的分支,分支上的 * 表明提交到版本庫的節點。--oneline 參數表示提交信息顯示爲一行。

十二、解決衝突

當建立分支後,分支和 master 主分支分別提交代碼到版本庫,此時切換回 master 主分支,合併分支會出現衝突,需手動處理後,從新提交到暫存區並提交到版本庫。

// 代碼衝突
<<<<<<< HEAD (當前更改)
master 分支代碼
=======
開發分支的代碼
>>>>>>> 開發的分支 (傳入的更改)


Git 操做遠程倉庫

遠程倉庫能夠是 Github、Gitee(碼雲)、Coding 或者中央服務器等等。

如下是經常使用免費倉庫的地址,能夠在首頁註冊帳號:

一、處理須要過濾和提交的文件夾

使用 WebStrom 編輯器編輯代碼時,會自動在根目錄生成 .idea 文件夾,使用 Mac 開發時根目錄下的 .DS_Store 文件夾,以及在項目開發時會安裝依賴存放在 node_modules 文件夾中,此類文件夾都是在把代碼上傳到遠程倉庫或中央服務器時不該該上傳的,所以應該在上傳以前過濾掉。

在根目錄建立 .gitignore 文件用於記錄上傳時被忽略的文件夾,內容(可根據須要自行配置)以下:

文件:.gitignore

.idea
.DS_Store
node_modules

Git 上傳時會自動忽略空文件夾,假設想要上傳一個名爲 public 的空文件夾,須要在文件夾內新建一個名爲 .gitkeep 的文件(名字隨意,最好有語義化),目的是使要提交的空文件夾再也不爲空。

二、關聯遠程倉庫

git remote add origin 遠程倉庫地址

三、查看關聯的遠程倉庫

git remote -v

四、刪除遠程倉庫的關聯

git remote rm 地址別名

地址別名指的是上面的 origin,也能夠是其餘名稱,必須對應要刪除關聯的地址別名。

五、推送代碼到遠程倉庫

git push origin master

git push -u origin master

若是加上了 -u 參數,之後再次提交時可省略地址別名和分支名稱,直接執行下面命令進行提交。

git push

六、拉取遠程倉庫的代碼

在提交代碼時,若是直接提交到遠程倉庫,會將當前代碼覆蓋到遠程倉庫,若是別人以前也向遠程倉庫提交了代碼,會在遠程倉庫中形成衝突,因此通常在提交代碼以前先拉取遠程倉庫的代碼與本地代碼進行合併,併產生一個新的歷史記錄,若出現衝突,手動處理衝突後再統一提交到遠程倉庫。

拉取但不合並代碼(與 merge 配合,不經常使用):

git fetch origin master

拉取併合並代碼(經常使用):

git pull origin master

七、建立 gh-pages 分支來發布靜態頁

涉及到遠程倉庫網站上的操做均以 Github 爲例,其餘倉庫大同小異:

  • 在項目中建立一個名爲 gh-pages 的分支;
  • 將分支提交到線上倉庫;
  • 找到提供給你的倉庫網站的 Settings 切換到 github-pages
  • 點擊該欄頂端的地址能夠訪問咱們的靜態頁。
git checkout -b gh-pages
touch index.html
git add .
git commit -m "提交信息"
git push origin gh-pages

八、拉取別人的項目到本地

git clone 項目地址 項目別名

上面命令項目別名是可選的,至關於給項目根文件夾重命名。

九、向別人的項目提問

  • 在遠程倉庫網站進入別人的項目頁面;
  • 點擊 Issue 選項;
  • 輸入問題標題和問題描述並點擊提交;
  • 項目全部者能夠回覆或關閉問題。

十、更改別人的項目代碼

  • 在別人項目的主頁上有一個叉子的圖標,操做名爲 Fork
  • Fork 是在當前項目下克隆了一份,若是代碼更新,不會隨之更新;
  • 使用 clone 命令克隆本身的地址將項目拉到本地,進行操做;
  • 默認就是 Git 倉庫並且有 origin 地址,修改後能夠將代碼提交到本身的倉庫上;
  • 只有 Fork 關係才能修改別人代碼後點擊 New pull request 發送提交請求;
  • 點擊 Create pull request 按鈕,填寫提交標題,和提交詳情,確認提交;
  • 項目全部者能夠在本身的項目頁面中 Pull request 菜單中查看提交併處理;
  • 點擊 Close pull request 關閉,點擊 Merge pull request 贊成提交併合併。

若是是一個團隊的其餘人須要操做同一個項目,上面的過程顯得很繁瑣,項目全部者能夠在 SettingsCollaborators 選項中經過添加別人的帳號或用戶名向項目中添加貢獻者,被添加的人擁有最大權限。


GUI 界面化

在當前的前端開發編輯器中,如 VSCode 和 WebStorm 等都集成了 Git,能夠直接點擊按鈕操做,沒必要使用命令行,這種操做 Git 的界面稱做 GUI 界面,我的建議仍是儘可能少的使用 GUI 界面,命令行是根本,仍是多敲命令行,孰能生巧。

<br/>

相關文章
相關標籤/搜索