git命令

原文鏈接:https://www.cnblogs.com/chris0710/p/8925977.html

初學Git——命令總結

1. Git簡介

// 1. 創建版本庫

$ cd:e // 切換盤符

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

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

$ mkdir Git // 創建文件夾Git

$ touch fileName // 新建文件

$ vi fileName // 編輯文件

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

$ 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 [email protected]: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 [email protected]: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服務器(暫時用不上,用的時候,再複習一下)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章