Git經常使用指令整理

[toc]git

一個注意點

下面的這些操做,絕大多數都要先進入相關的本地倉庫文件夾才能夠。github

  • 在CMD中運行
cd/d F:\工做相關\2020年02月27日新項目
複製代碼
  • 在Git Bash中運行,選擇Git Bash Here

選擇Git Bash Here

git config 配置Git相關信息

git config命令的做用是配置git的相關信息。shell

  1. 配置全局的用戶名和郵箱,mac下可經過終端輸入命令cat ~/.gitconfig查看配置信息。緩存

    • 設置用戶名:git config --global user.name "name"
    • 設置用戶郵箱:git config --global user.email "eamil"
  2. 針對單個倉庫配置用戶名和郵箱,mac下可經過終端進入到項目的根目錄中,而後輸入命令cat .git/config查看配置信息。bash

    • 設置用戶名:git config user.name "name"
    • 設置用戶郵箱:git config user.email "eamil"
  3. 查看git全部配置信息:git config --list服務器

  4. 查看配置的用戶名:git config user.nameapp

  5. 查看配置的用戶郵箱:git config user.emailssh

  6. 定義命令別名:ide

    • git config --global alias.st status:則git status可用git st代替
    • git config --global alias.co checkout:則git checkout可用git co代替
    • git config --global alias.ci commit:則git commit可用git ci代替
    • git config --global alias.br branch:則git branch可用git br代替

也能夠自定義其餘命令的別名,主要合理且方便操做便可。fetch

git init Git倉庫初始化

git init命令的做用是在當前目錄中初始化倉庫,而且建立一個名爲.git的子目錄,該目錄含有你初始化的Git倉庫中全部的必須文件。

git status 顯示文件狀態

git status命令的做用是顯示文件狀態,紅色表示工做目錄的文件被修改但尚未提交到暫存區,綠色表示已經提交到暫存區。

  1. 以極簡的方式顯示文件狀態:

    git status -s
    複製代碼
    • A:本地新增的文件(服務器上沒有)
    • C:文件的一個新拷貝
    • D:本地刪除的文件(服務器上還在)
    • M:紅色爲修改過未被添加進暫存區的,綠色爲已經添加進暫存區的
    • R:文件名被修改
    • T:文件的類型被修改
    • U:文件沒有被合併(你須要完成合並才能進行提交)
    • X:未知狀態(極可能是遇到git的bug了,你能夠向git提交bug report)
    • ?:未被git進行管理,可使用git add fileName把文件添加進來進行管理

已經被修改但還沒提交到暫存區的文件,能夠經過命令git checkout -- fileName撤銷更改。

git add 將文件從工做目錄添加至暫存區

git add命令的做用是將文件從工做目錄添加至暫存區

  1. 把全部修改的信息添加到暫存區:git add .
  2. 把全部跟蹤文件中被修改過或已刪除的文件信息添加至暫存區:git add -ugit add --update,它不會處理那些沒有被跟蹤的文件
  3. 把全部跟蹤文件中被修改過或已刪除文件和全部未跟蹤的文件信息添加到暫存區:git add -Agit add --all

注意:git add .git add -A2.x版本中提交類型方面功能相同,但會由於所在目錄不一樣產生差別:

  • git add .只會提交當前目錄或者子目錄下相應文件。
  • git add -A不管在哪一個目錄執行都會提交相應文件。

已經被提交到暫存區的文件,能夠經過命令git reset HEAD -- fileName撤銷提交。

git commit 將暫存區的修改提交到本地倉庫

git commit命令的做用是將暫存區的修改提交到本地倉庫,同時會生成一個commmit-id

  1. 將暫存區的修改提交到本地倉庫:git commit -m "message","message"是本次提交的簡述內容,好比添加新功能或修復bug等

  2. 將本地工做區中修改後還未使用

    git add .
    複製代碼

命令添加到暫存區中的文件也提交到本地倉庫:

git commit –a –m "message"
複製代碼

該命令至關於如下兩條命令:

  • git add .:把全部修改的信息添加到暫存區
  • git add -m "message":將暫存區的修改提交到本地倉庫
  1. 修改最後一次提交(可用於漏掉某個文件的提交或從新編輯信息):git commit --amend

git pull 獲取遠程主機某個分支的更新

git pull命令的做用是獲取遠程主機某個分支的更新,再與本地指定分支合併。git pull <遠程主機名><遠程分支名>:<本地分支名>

  1. 取回遠程主機上的dev分支與本地的master分支合併:

    git pull origin dev:master
    複製代碼
  2. 取回遠程主機上的dev分支與當前分支合併:

    git pull origin dev
    複製代碼

該命令至關於如下兩條命令:

  • git fetch origin:獲取遠程主機上全部分支的更新,也能夠用git fetch origin dev表示獲取遠程主機上dev分支的更新
  • git merge origin/dev:當前分支合併dev分支

注意:經過git fetch所取回的更新,在本地主機上須要用「遠程主機名/分支名」的形式讀取,好比origin主機的master分支,就須要用origin/master來讀取。

git fetch 將遠程主機上全部分支的更新取回本地

git fetch命令的做用是將遠程主機上全部分支的更新取回本地,並記錄在.git/FETCH_HEAD

  1. 獲取遠程主機上master分支的代碼:git fetch origin
  2. 在本地新建test分支,並將遠程主機上master分支代碼下載到本地test分支:git fetch origin master:test
  3. 清理分支的緩存:git fetch -p

git push 將本地分支的更新推送到遠程主機上

git push命令的做用是將本地分支的更新推送到遠程主機上。

  1. 將本地master分支的更新推送到遠程主機上:git push origin master
  2. 刪除遠程dev分支:git push origin --delete dev

git branch 分支管理操做

git branch命令的做用主要是作分支管理操做。

  1. 查看本地分支:git branch
  2. 查看本地和遠程分支:git branch -a
  3. 新建名字爲test的分支:git branch test
  4. 將test分支名字改成dev:git branch -m test dev
  5. 刪除名字爲dev的分支:git branch -d dev
  6. 強制刪除名字爲dev的分支:git branch -D dev

以上命令都是針對本地倉庫操做,不影響遠程倉庫。

git checkout 建立和切換分支以及撤銷工做區的修改

git checkout命令最經常使用的情形是建立和切換分支以及撤銷工做區的修改。

  1. 切換到tag爲v1.0.0時對應的代碼:git checkout v1.0.0

  2. 在tag爲v1.0.0的基礎上建立分支名爲test的分支:

    git checkout -b test v1.0.0
    複製代碼

    。該命令至關於如下兩條命令:

    • git branch test v1.0.0:在v1.0.0的基礎上建立分支test
    • git checkout v1.0.0:切換到分支test
  3. 把當前目錄全部修改的文件從HEAD中移除而且把它恢復成未修改時的樣子:git checkout .

  4. 撤銷工做目錄中文件的修改(文件有改動但還未git add):git checkout -- fileName,或者撤銷全部修改使用git checkout .

git tag 對項目標籤進行管理

git tag 命令主要是對項目標籤進行管理。

  1. 查看已有的標籤歷史記錄:git tag
  2. 給當前最新的commit打上標籤:git tag <標籤的定義>
  3. 給對應的commit id打上標籤:git tag <標籤訂義>

git log 查看歷史提交記錄

git log命令的做用是查看歷史提交記錄

  1. 查看歷史提交記錄:git log
  2. 將每條歷史提交記錄展現成一行:git log --oneline
  3. 查看某我的的提交記錄:git log --author="name"
  4. 顯示ASCII圖形表示的分支合併歷史:git log --graph
  5. 顯示前n條記錄:git log -n
  6. 顯示某個日期以後的記錄:git log --after="2018-10-1",包含2018年10月1號的記錄
  7. 顯示某個日期以前的記錄:git log --after="2018-10-1,包含2018年10月1號的記錄
  8. 顯示某兩個日期之間的記錄:git log --after="2018-10-1" --before="2018-10-7"

git reset 是撤銷暫存區的修改或本地倉庫的提交

git reset命令的做用是撤銷暫存區的修改或本地倉庫的提交。

  1. 撤銷已經提交到暫存區的文件(已經git add但還未git commit):

    • 撤銷已經提交到暫存區的文件:git reset HEAD fileNamegit reset --mixed HEAD fileName
    • 撤銷全部提交:git reset HEAD .git reset --mixed HEAD .
  2. 對已經提交到本地倉庫作撤銷(已經git commit但還未git push):

    • 將頭指針恢復,已經提交到暫存區以及工做區的內容都不變:git reset --soft commit-idgit reset --soft HEAD~1
    • 將頭指針恢復而且撤銷暫存區的提交,可是工做區的內容不變:git reset --mixed commit-idgit reset --mixed HEAD~1
    • 將全部內容恢復到指定版本:git reset --hard commit-idgit reset --hard HEAD~1

注意:commit-id可經過git log查看(取前六位便可),HEAD~1表示前一次提交(能夠此類推)。

git remote 管理遠程倉庫

git remote命令的做用主要是管理遠程倉庫。

  1. 查看關聯的遠程倉庫的名稱:git remote
  2. 查看關聯的遠程倉庫的詳細信息:git remote -v
  3. 添加遠程倉庫的關聯:git remote add origin <遠程倉庫地址>
  4. 刪除遠程倉庫的關聯:git remote remove <遠程倉庫名稱>
  5. 修改遠程倉庫的關聯:git remote set-url origin <新的遠程倉庫地址>
  6. 更新遠程倉庫的分支:git remote update origin --prune

git merge 用來控制分支的合併

git merge命令的做用主要是分支的合併。

1:若是當前是master分支,須要合併dev分支:git merge dev

git stash 緩存區相關操做

git stash命令的做用主要若是當前分支所作的修改你還不想提交,但又須要切換到其餘分支去查看,就可使用git stash保存當前的修改。

  1. 保存當前進度:git stash
  2. 查看已經保存的歷史記錄:git stash list
  3. 從新應用某個已經保存的進度,而且刪除進度記錄:git stash pop <歷史進度id>
  4. 從新應用某個已經保存的進度,但不刪除進度記錄:git stash apply <歷史進度id>,若是直接使用git stash默認是使用最近的保存
  5. 刪除某個歷史進度:git stash drop <歷史進度id>
  6. 刪除全部的歷史進度:git stash clear

gitignore 忽略那些不必的提交

.gitignore文件的做用是忽略那些不必的提交,好比系統環境或程序運行時產生的文件。GitHub爲咱們提供了各個語言的gitignore合集github/gitignore,其中也包括Android.gitignore

將本地新建的項目提交到遠程倉庫的步驟

  • 初始化本地倉庫git init
  • 將本地內容添加至git本地暫存區中git add .
  • 將暫存區添加至本地倉庫中git commit -m "first commit"
  • 添加遠程倉庫路徑git remote add origin https://github.com/gybguohao/test.git
  • 將本地內容push至遠程倉庫中git push -u origin master

祕鑰配置

  • mac終端查看是否已經存在SSH密鑰:cd ~/.ssh,若是沒有密鑰則不會有此文件夾。

  • 生成新的祕鑰, 命令以下 ssh-keygen -t rsa -C "eamil" 你須要把郵件地址換成你本身的郵件地址,而後一路回車,使用默認值便可,由於這個個Key僅僅用於簡單的服務,因此也無需設置密碼。

完成後會有以下顯示

Enter passphrase (empty for no passphrase):
   Enter same passphrase again:
   Your identification has been saved in /Users/gybguohao/.ssh/id_rsa。
   Your public key has been saved in /Users/gybguohao/.ssh/id_rsa.pub。
   The key fingerprint is:
   SHA256:5V6ZCQNS/3bVdl0GjGgQpWMFLazxTslnKbW2B1mbC+E eamil
複製代碼

若是服務器端須要公鑰, 直接複製.ssh目錄下的id_rsa.pub內容便可。

相關文章
相關標籤/搜索