常見信息
master: 默認開發分支
origin:默認遠程版本庫
Head: 默認開發分支
Head^:Head 的父提交
建立新倉庫
git init
git init [project-name] # 新建一個目錄,並將其初始化爲git倉庫
git clone [url] # 拷貝一個git倉庫到本地
配置
Git 的配置文件是 .gitconfig,能夠放在用戶的主目錄(全局配置)下或項目目錄下(項目配置) 。
# 顯示當前的 git 配置
git config --list
# 編輯 Git 配置
git config -e [--global]
# 設置用來提交代碼的用戶信息
git config [--global] user.name "[name]"
git config [--global] user.email "[email address]"
添加刪除文件
# 將指定文件添加到暫存區
git add [file1] [file2] ...
# 將指定目錄添加到暫存區,包括子目錄
git add [dir]
# 將當前目錄中的全部文件添加到暫存區
git add .
# 對同一個文件屢次更改,建議分開提交
git add -p
# 將指定文件從工做區刪除,並將本次刪除添加到暫存區
git rm [file1] [file2] ...
# 中止追蹤指定的文件,不會刪除文件
git rm --cached [file]
# 對指定文件進行重命名,並添加到暫存區中
git mv [file-original] [file-renamed]
代碼提交
# 將暫存區中的文件提交到代碼倉庫
git commit -m [message]
# 將指定的文件從暫存區中提交到倉庫
git commit [file1] [file2] ... -m [message]
# 將工做區的更改直接提交到倉庫
git commit -a
# 提交前展現全部的變更
git commit -v
# 使用新提交代替上次提交,若是代碼沒有任何變更,將會用於重寫上次提交的提交信息
git commit --amend -m [message]
# 重作上次的提交,並將指定的文件包含其中
git commit --amend [file1] [file2] ...
分支相關
# 列出本地分支
git branch
# 列出全部遠程分支
git branch -r
# 列出本地和遠程的全部分支
git branch -a
# 新建分支,並留在當前分支
git branch [branch-name]
# 新建分支,並切換到新建分支
git checkout -b [branch-name]
# 指向某次提交新建分支
git branch [branch] [commit]
# 建立一個新分支,並與指定的遠程分支創建跟蹤關係
git branch --track [branch] [remote-branch]
# 切換到指定分支,並更新工做區
git checkout [branch-name]
# 切換到上一個分支
git checkout -
# 將本地分支與指定的遠程分支創建跟蹤關心
git branch --set-upstream [branch] [remote-branch]
# 合併指定分支與當前分支
git merge [branch]
# 將指定的提交合併到本地分支
git cheery-pick [commit]
# 刪除本地指定分支
git branch -d [branch-name]
# 刪除遠程分支
git push origin --delete [branch-name]
git push -dr [remote/branch]
標籤操做
# 列出全部標籤
git tag
# 在當前 tag 上建立一個新標籤
git tag [tag]
# 在指定 tag 上建立一個新標籤
git tag [tag] [commit]
# 刪除本地標籤
git tag -d [tag]
# 刪除遠程標籤
git push origin :refs/tags/[tagName]
# 查看標籤信息
git show [tag]
# 提交指定標籤
git push [remote] --tags
# 建立一個新分支,指向特定的標籤
git checkout -b [branch] [tag]
查看信息
# 顯示有變更的文件
git status
# 顯示當前分支的提交歷史
git log
# 顯示提交歷史和每次提交的文件
git log --stat
# 指定關鍵字搜索提交歷史
git log -S [keyword]
# 顯示自某次提交以來的全部更改,一次提交顯示一行
git log [tag] HEAD --pretty=format:$s
# 顯示自某次提交以來的全部更改,其提交描述必須符合搜索條件
git log [tag] HEAD --grep feature
# 顯示指定文件的提交歷史
git log --flollow [file]
git whatchanged [file]
# 顯示與指定文件相關的每一個差別
git log -p [file]
# 顯示最近 5 次提交
git log -5 --pretty --oneline
# 顯示全部的提交用戶,已提交數目多少排名
git shortlog -sn
# 顯示指定文件什麼時候被何人修改過
git blame [file]
# 顯示暫存區和工做區文件差異
git diff
# 顯示暫存區和上一次提交的差異
git diff --cached [file]
# 顯示工做區和當前分支的最近一次提交的差異
git diff HEAD
# 顯示指定兩次提交的差異
git diff [first-branch]...[second-branch]
# 顯示今天提交了多少代碼
git diff --shortstat "@{0 day ago}"
# 顯示特定提交的提交信息和更改的內容
git show [commit]
# 某次提交改動了哪些文件
git show --name-only [commit]
# 顯示某個提交的特定文件的內容
git show [commit]:[filename]
# 顯示當前分支的最新提交
git reflog
遠程同步
# 從遠程分支下載全部變更
git fetch [remote]
# 顯示全部遠程倉庫
git remote -v
# 顯示某個遠程參考信息
git remote show [remote]
# 新建一個遠程倉庫,並命名
git remote add [shortname] [url]
# 檢索遠程村粗庫的更改,並與本地分支合併
git pull [remote] [branch]
# 將本地分支提交到遠程倉庫
git push [remote] [branch]
# 將當前分支強制提交到遠程倉庫,即便有衝突存在
git push [remote] --force
# 將全部分支提交到遠程倉庫
git push [remote] --all
#### 撤銷操做
# 將暫存區中的指定文件還原到工做區,保留文件變更
git checkout [file]
# 將指定文件從某個提交還原到暫存區和工做區
git checkout [commit] [file]
# 將暫存區中的全部文件還原到工做區
git checkout .
# 重置暫存區中的指定文件,與先前的提交保持一致,但保持工做空間的變更不變
git reset [file]
# 重置暫存區和工做區中的指定文件,並與最近一次提交保持一致,工做空間文件變更不會保留
git reset --hard
# 重置暫存區,指向指定的某次提交,工做區的內容不會被覆蓋
git reset [commit]
# 重置暫存區和工做區中的指定文件,並與指定的某次提交保持一致,工做區的內容會被覆蓋
git reset --hard [commit]
# 將 HEAD 重置爲指定的某次提交,保持暫存區和工做區的內容不變
git reset --keep [commit]
# 新建新提交以撤銷指定的提交
git revert [commit]
# 暫存爲提交的變更,並在稍後移動它們
git stash
git stash pop
git stash apply
其餘
# 生成用於發佈的存檔
git archive
歡迎關注 公衆號【小夭同窗】