git 命令

git 使用心得

平常使用

  1. 設置用戶名、郵箱html

    • git config --global user.name " "node

    • git config --global user.email " "git

  2. 建立版本庫github

    • pwd # 顯示當前目錄vim

    • git init # 變成git能夠管理的倉庫windows

  3. 添加文件到版本庫服務器

    • git add xx.txt # 添加到暫存區app

    • git commit # 文件提交,把暫存區的內容提交到當前分支ssh

    • git status # 查看是否有未提交文件分佈式

    • git diff xx.txt # 查看修改了什麼內容

  4. 版本回退

    • 查看歷史記錄

      • git log # 查看歷史記錄

      • git log -pretty=oneline # (顯示縮略信息)

    • git reflog #得到版本號

    • cat xx.txt #查看內容

    • 版本回退

      • git reset --hard HEAD^ # 回退到上個版本

      • git reset --hard HEAD~100 # 回退到前100個版本

      • git reset --hard 版本號 # 經過版本號回退

  5. 撤銷修改

    • git checkout -- a.txt # 丟棄單個文件的修改

    • git checkout -- . # 丟棄所有文件的修改

    • rm xx.txt # 刪除文件

  6. 工做區

    • 工做區:電腦上能看到的目錄

    • 版本庫:工做區下的隱藏目錄.git,是版本庫,存有暫存區、git自動建立的第一個分支master、指向master的一個指針HEAD

  7. 分支

    • git branch # 查看本地分支

    • git branch -a # 查看全部分支,包含遠程

    • git branch <name> # 建立分支

    • git checkout <name> # 切換分支

    • git checkout -b <name> # 建立+切換分支

    • git merge <name> # 合併某分支到當前分支

    • git branch -d <name> # 刪除分支

    • git branch -D <name> # 強制刪除分支

經常使用的命令

git status                 # 查看狀態
git add -u                 # 添加跟蹤文件
git add -A                 # 使用-A參數會將添加全部改動的已跟蹤文件和未跟蹤文件。
git commit -m 「」           # 提交併註釋
git pull 遠程分支 本地分支 # 拉取文件(git pull origin 分支 )
git push origin 分支       # 推送文件到遠程分支
git checkout master        # 切換分支
git checkout -b 分支       # 新建分支並切換到
git log                    # 查看歷史提交
git reset --hard HEAD^     # 版本回退
git push -f                # 強制推送當前分支到遠程,適用於當前版本低於最新提交

配置

配置密鑰

ssh -keygen -t rsa -C < email > # 生成密鑰
ssh -T git@github.com # 測試是否成功

配置我的信息

git congfig --global user.name < name >
git config --global user.email < email >

config

git config --global user.name < name > # 設置提交用戶名
git config --global user.email < email > # 設置提交郵箱
git config --list # 查看配置的信息
git remote remove origin # 刪除該遠程路徑
git remote add origin git@github.com:SeaHai/myNotes.git # 添加遠程路徑

help

git help config #獲取幫助信息

配置自動換行(自動轉換坑太大)

windows 換行符:CRLF
Linux/UNIX 換行符:LF

  • git config --global core.autocrlf false # 提交到git是自動將換行符轉換爲lf (windows 到 UNIX須要轉換換行符)

  • git config --global core.autocrlf true # 關閉換行轉換功能

多帳號ssh配置

  1. 生成指定名字的密鑰

    • ssh-keygen -t rsa -C "郵箱地址" -f ~/.ssh/github_seahai #會生成 github_seahai 和 github_seahai.pub 這兩個文件

  2. 密鑰複製到託管平臺上

    • vim ~/.ssh/github_seahai.pub #打開公鑰文件 github_seahai.pub ,並把內容複製至代碼託管平臺上

  3. 修改config文件

vim ~/.ssh/config #修改config文件,若是沒有建立 config

Host seahai.github.com
HostName github.com
User git
IdentityFile ~/.ssh/github_seahai
 
Host abc.github.com
HostName github.com
User git
IdentityFile ~/.ssh/github_abc
  1. 測試

    • ssh -T git@seahai.github.com # @後面跟上定義的Host

倉庫創建方式

新建倉庫

  1. git init # 初始化

  2. git status # 獲取狀態

  3. git add file # .* 表明所有添加

  4. git commit -m "message" # 添加提交註釋

  5. git remote add origin git@github.com:SeaHai/myNotes.git # 添加遠程倉庫

  6. 推送到遠程

    • git push -u origin master # push同時設置默認跟蹤分支

    • git push origin master # push到遠程

    • git push -f origin master # 強制推送

從現有倉庫克隆

  • git clone git@github.com:SeaHai/myNotes.git

  • git clone git@github.com:SeaHai/myNotes.git myNotes #克隆到自定義文件夾

命令

add 添加

  • git add * # 跟蹤新文件

  • git add -u [path] # 添加[指定路徑下]已跟蹤文件

rm 刪除

  • rm * & git rm * # 移除文件

  • git rm -f * # 強制移除文件

  • git rm --cached * # 取消跟蹤

  • git mv file_from file_to # 重命名跟蹤文件

  • git log # 查看提交記錄

commit 提交

  • git commit # 提交更新

  • git commit -m 'message' # 提交說明

  • git commit -a # 跳過使用暫存區域,把全部已經跟蹤過的文件暫存起來一併提交

  • git commit --amend # 修改最後一次提交

reset 版本回退

  • git reset HEAD * # 取消已經暫存的文件

  • git reset --mixed HEAD * # 同上

  • git reset --soft HEAD * # 重置到指定狀態,不會修改索引區和工做樹

  • git reset --hard HEAD * # 重置到指定狀態,會修改索引區和工做樹

  • git reset -- files # 重置index區文件

revert 撤銷操做

  • git revert HEAD # 撤銷前一次操做

  • git revert HEAD~ # 撤銷前前一次操做

  • git revert commit # 撤銷指定操做

checkout

  • git checkout -- file # 取消對文件的修改(從暫存區——覆蓋worktree file)

  • git checkout branch|tag|commit -- file_name # 從倉庫取出file覆蓋當前分支

  • git checkout -- . # 從暫存區取出文件覆蓋工做區

diff

  • git diff file # 查看指定文件的差別

  • git diff --stat # 查看簡單的diff結果

  • git diff # 比較Worktree和Index之間的差別

  • git diff --cached # 比較Index和HEAD之間的差別

  • git diff HEAD # 比較Worktree和HEAD之間的差別

  • git diff branch # 比較Worktree和branch之間的差別

  • git diff branch1 branch2 # 比較兩次分支之間的差別

  • git diff commit commit # 比較兩次提交之間的差別

stash

  • git stash # 將工做區現場(已跟蹤文件)儲藏起來,等之後恢復後繼續工做。

  • git stash list # 查看保存的工做現場

  • git stash apply # 恢復工做現場

  • git stash drop # 刪除stash內容

  • git stash pop # 恢復的同時直接刪除stash內容

  • git stash apply stash@{0} # 恢復指定的工做現場,當你保存了不僅一份工做現場時。

分支

branch

  • git branch # 列出本地分支

  • git branch -r # 列出遠端分支

  • git branch -a # 列出全部分支

  • git branch -v # 查看各個分支最後一個提交對象的信息

  • git branch --merge # 查看已經合併到當前分支的分支

  • git branch --no-merge # 查看爲合併到當前分支的分支

  • git branch test # 新建test分支

  • git branch -m old new # 重命名分支

  • git branch -d test # 刪除test分支

  • git branch -D test # 強制刪除test分支

  • git branch --set-upstream dev origin/dev # 將本地dev分支與遠程dev分支之間創建連接

checkout

  • git checkout test # 切換到test分支

  • git checkout -b test # 新建+切換到test分支

  • git checkout -b test dev # 基於dev新建test分支,並切換

merge

  • git merge test # 將test分支合併到當前分支

  • git merge --squash test # 合併壓縮,將test上的commit壓縮爲一條

cherry-pick

  • git cherry-pick commit # 揀選合併,將commit合併到當前分支

  • git cherry-pick -n commit # 揀選多個提交,合併完後能夠繼續揀選下一個提交

rebase

  • git rebase master # 將master分支上超前的提交,變基到當前分支

  • git rebase --onto master 169a6 # 限制回滾範圍,rebase當前分支從169a6之後的提交

  • git rebase --interactive # 交互模式

  • git rebase --continue # 處理完衝突繼續合併

  • git rebase --skip # 跳過

  • git rebase --abort # 取消合併

遠端

  • git fetch origin remotebranch[:localbranch] # 從遠端拉去分支[到本地指定分支]

  • git merge origin/branch # 合併遠端上指定分支

  • git pull origin remotebranch:localbranch # 拉去遠端分支到本地分支

  • git push origin branch # 將當前分支,推送到遠端上指定分支

  • git push origin localbranch:remotebranch # 推送本地指定分支,到遠端上指定分支

  • git push origin :remotebranch # 刪除遠端指定分支

  • git checkout -b [--track] test origin/dev # 基於遠端dev分支,新建本地test分支[同時設置跟蹤]

撤銷遠程記錄

  • git reset --hard HEAD~1

  • git push -f origin HEAD:master

忽略文件

echo node_modules/ >> .gitignore

刪除文件

git rm -rf node_modules/

git是一個分佈式代碼管理工具,因此能夠支持多個倉庫,在git裏,服務器上的倉庫在本地稱之爲remote。
我的開發時,多源用的可能很少,但多源其實很是有用。

  • git remote add origin1 git@github.com:SeaHai/myNotes.git

  • git remote # 顯示所有源

  • git remote -v # 顯示所有源+詳細信息

  • git remote rename origingit1 origin2 # 重命名

  • git remote rm origin # 刪除

  • git remote show origin # 查看指定源的所有信息

標籤

當開發到必定階段時,給程序打標籤是很是棒的功能。

  • git tag # 列出現有標籤

  • git tag v0.1 # 新建標籤

  • git tag -a v0.1 -m 'my version 1.4' # 新建帶註釋標籤

  • git checkout tagname # 切換到標籤

  • git push origin v1.5 # 推送分支到源上

  • git push origin --tags # 一次性推送全部分支

  • git tag -d v0.1 # 刪除標籤

  • git push origin :refs/tags/v0.1 # 刪除遠程標籤

log

  • git log # 查看最近的提交日誌

  • git log --pretty=oneline # 單行顯示提交日誌

  • git log --graph --pretty=oneline --abbrev-commit

  • git log -num # 顯示第幾條log(倒數)

  • git config format.pretty oneline # 顯示歷史記錄時,每一個提交的信息只顯示一行

  • git config color.ui true # 彩色的 git 輸出

  • git log --since=1.day # 一天內的提交;你能夠給出各類時間格式,好比說具體的某一天(「2008-01-15」),或者是多久之前(「2 years 1 day 3 minutes ago」)。

  • git log --pretty="%h - %s" --author=本身的名字 # 查看本身的日誌

  • git log -p -2 # 展開兩次更新顯示每次提交的內容差別

  • git log --stat # 要快速瀏覽其餘協做者提交的更新都做了哪些改動

  • git log --pretty=format:"%h - %an, %ar : %s" # 定製要顯示的記錄格式

命令速查表

命令速查表-1
命令速查表-2
命令速查表-3
命令速查表-4
命令速查表-5
命令速查表-6

參考連接

相關文章
相關標籤/搜索