初學Git——命令總結

首先,感謝廖雪峯老師製做的Git教程:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000,下面命令是我本身的理解,如有不正確的地方,歡迎指正,謝謝!git

1. Git簡介github

// 1. 建立版本庫vim

$ cd:e // 切換盤符緩存

$ cd .. // 回到文件上一層(注: cd與..中間有個空格)服務器

$ cd ~ // 回到當前目錄的主目錄app

$ mkdir Git // 建立文件夾Gitui

$ touch fileName // 新建文件3d

$ vi fileName // 編輯文件code

$ press i button // 開始進入編輯狀態server

$ press the Esc button // 退出vim編輯區

$ :wq // 退出編輯狀態, 回到命令窗口

$ mkdir learngit // 建立文件夾learngit 

$ pwd // 顯示當前路徑/e/Git/learngit

$ git init // 將當前目錄變成一個Git能夠管理的倉庫

$ touch+文件名 // 直接新建一個文件

$ git add readme.txt // 將文件添加到Git倉庫(把文件修改添加到暫存區)

$ git commit -m "wrote a readme.txt." // 將文件提交到倉庫(把暫存區的全部內容提交到當前分支)

$ git add file1.txt // 添加file1.txt文件

$ git add file2.txt file3.txt // 同時添加file2.txt和file3.txt兩個文件

$ git commit -m "add 3 files." // 一次性提交3個文件

2. 時光穿梭機:

// 2.1 版本回退

$ git status // 查看當前倉庫狀態(倉庫下的工做區文件是否被修改過)

$ git diff readme.txt // 查看工做區的readme.txt與緩存區的readme.txt的區別

$ git log // 查看最近到最遠的提交記錄(詳情: commit id + Author + Date + comment)

$ git log --pretty=oneline // 查看最近到最遠的提交記錄(簡寫:commit id + comment)

$ git reset --hard HEAD^ // 回到上一個版本(HEAD: 當前版本,HEAD^: 上一個版本,HEAD~100: 往上100個版本)

$ git reset --hard 1234567 // 回到指定版本號commit id(此處:commit id 假設爲1234567******,Git會根據commit id的前幾位自動尋找對應的版本)

$ cat readme.txt // 查看readme.txt的內容

$ git reflog // 查看每一次命令記錄歷史,確保能回到任意版本  

// 2.2 工做區與暫存區

$ git diff readme.txt // 比較工做區(working directory)和暫存區(stage/index)的區別

$ git diff --cached // 比較暫存區(stage/index)和分支(master)的區別

// 2.3 管理修改(詳見1. 建立版本庫中的命令)

// 2.4 撤銷修改

$ git checkout -- readme.txt // 撤銷修改:1. 文件在添加到緩存區前修改,則回退到原工做區狀態;2. 文件在添加到緩存區後修改,則回退到原緩存區狀態。也便是將readme.txt撤回到最近一次git add或git commit狀態(注:--表示在當前分支,若是沒有,則切換到另外一個分支)

$ cat readme.txt // 查看文件內容

$ git reset HEAD readme.txt // 1. 回退到最新版本;2. 將暫存區的修改回退到工做區

// 2.5 刪除文件

$ rm test.txt // 刪除工做區文件(相似於手動刪除)

$ git status // 查看當前工做區與緩存區狀態

$ git rm test.txt // 狀況1:確認刪除

$ git commit -m "remove test.txt" // 狀況1:確認刪除後,提交到版本庫

$ git checkout -- readme.txt // 狀況2:誤刪,須要回退(即:用版本庫裏的版本替換工做區的版本)

// 3. 遠程倉庫

// 3.1 添加遠程庫

git remote add origin git@server-name:path/repo-name.git // 關聯一個遠程倉庫,如:$ git remote add origin git@github.com:ChrisLeejing/learngit.git

git push -u origin master // 第一次推送master分支的全部內容

注:在GitHub上建立新倉庫時,若是勾選了README.md選項時,可能會出現下面錯誤,提示:遠程倉庫有readme.txt,而本地倉庫沒有README.txt,此時應該先進行合併文件,再進行推送。

git pull --rebase origin master // 推送以前,進行合併

合併文件以後,發現本地倉庫中多了README.md文件,此時再進行推送修改到遠程倉庫就能夠了。

 

再次執行:git push -u origin master, 便可推送本地倉庫到遠程倉庫了

查看GitHub上的文件,已經更新!

git push origin master // 之後每次本地修改更新後,推送最新修改

// 3.2 從遠程庫克隆

$ git clone git@github.com:ChrisLeejing/gitskills.git // 以SSH方式克隆

$ git clone https://github.com/ChrisLeejing/gitskills.git // 以Https協議方式克隆

// 4. 分支管理

// 4.1 建立與合併分支

git branch // 查看全部分支(當前分支以‘*’標記)

git branch <name> // 建立分支(如:git branch dev)

git checkout <name> // 切換分支

git checkout -b <name> // 建立切換分支(如:git checkout -b dev)

git merge <name> // 合併分支到當前分支上

git branch -d <name> // 刪除該分支

// 4.2 解決衝突

git log --graph // 查看分支合併圖

git log --graph --pretty=oneline --abbrev-commit // 查看分支合併縮略圖

// 4.3 分支管理策略

git merge --no-ff -m "註釋" dev // 合併後的分支有歷史記錄,而Fast-Forward合併以後,分支沒有歷史記錄

// 4.4 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,而後能夠恢復到指定的隱藏的工做現場

// 4.5 Feature分支

注:當添加一個feature時,最好新建一個分支:git checkout -b <name>

git branch -D <name> // 強行刪除一個沒有被合併到主分支的分支

// 4.6 多人協做(最好結合工做場景理解)

git remote -v // 查看遠程庫詳細信息

git push origin dev // push本地dev分支到遠程dev

git push origin master // push本地master分支到遠程master(時刻保持同步)

git pull // 將最新的pull/dev(master)爬下來

git checkout -b branch-name origin/branch-name // 在本地建立和遠程分支對應的分支

git branch --set-upstream-to=origin/<branch> dev // 創建本地分支和遠程分支的關聯

// 4.7 Rebase

git rebase // 將本地未push的分支提交整理成直線,利於查看

// 5. 標籤管理

// 5.1 建立標籤

git tag <tagname> // 建立標籤

git tag // 查看全部標籤

git tag <tagname> commitId // 爲某次提交建立指定標籤

git show <tagname> // 查看指定標籤具體內容

git tag -a <tagname> -m "v0.1 released" commitId // 爲某次指定的提交建立標籤,同時添加標籤註釋

git tag -d <tagname> // 刪除某個標籤

git push origin <tagname> // 推送某個標籤到遠程庫

git push origin --tags // 一次性推送全部標籤到遠程庫

git tag -d v0.9 // 刪除遠程庫標籤(第一步:刪除本地庫標籤)

git push origin :refs/tags/v0.9 // 刪除遠程庫標籤(第二步:從遠程庫刪除標籤)

// 6. 使用GitHub

在GitHub上,能夠本身fork任意開源倉庫,本身擁有fork後的倉庫的讀與寫操做權限,能夠推送pull request給官方倉庫貢獻代碼。

// 7. 使用碼雲(與GitHub相似,用到的時候,再註冊使用練習,畢竟GitHub更加NB一些!)

// 8. 自定義Git(這裏只是簡單入門)

git config --global color.ui true // 讓Git顯示顏色

// 8.1 忽略特殊文件

忽略某些文件時,須要編寫.gitignore文件,文件自己要放到版本庫中,Git能夠對.gitignore作版本管理!(注:不須要從頭寫.gitignore文件,GitHub已經爲咱們準備了各類配置文件,只須要組合一下就可使用了。全部配置文件能夠直接在線瀏覽:https://github.com/github/gitignore

// 8.2 配置別名

git config --global alias.st status // 將st做爲status的別名,之後就能夠git st查看暫存區與工做區的狀態了(還有相似co:checkout, ci:commit, br:branch,--global:是針對於當前用戶起做用的,若是不加,則只針對於當前倉庫)

cat .gitignore // 查看當前文件全部配置信息(包括別名信息)

// 8.3 搭建Git服務器(暫時用不上,用的時候,再複習一下)

到此,Git教程學完,感謝廖雪峯老師!爲了讓本身不遺忘,記下本身練習的Git命令地址:E:\Git\learngit\note.txt
相關文章
相關標籤/搜索