Git 是一個免費的開源分佈式版本控制系統, 旨在快速高效地處理從小型到大型項目的全部內容 Git 易於學習 , 佔地面積小, 具備閃電般的快速性能. 它具備Subversion,CVS,Perforce和ClearCase之類的SCM工具, 具備廉價的本地分支, 方便的暫存區域和多個工做流等功能 官方這麼說的!html
原文連接git
Git 的出現方便了千萬程序員, 提升了開發者之間的協做, 特別相對大型項目而言.程序員
內建的圖形化 Gitgithub
gitk
複製代碼
彩色的 Git 輸出bash
git config color.ui true
複製代碼
顯示歷史記錄時,每一個提交的信息只顯示一行app
git config format.pretty oneline
複製代碼
# 查看當前版本
git --version
# 版本升級
git update
複製代碼
git config --global user.name "you username"
git config --global user.email "you email"
複製代碼
git log
# 查看提交記錄
# 顯示簡化版
git log --pretty=oneline
複製代碼
git branch
* master
# * 標識的是當前所在的分支
複製代碼
git branch -r
複製代碼
git branch -a
複製代碼
git branch [branch name]
# 例如
git branch dev
複製代碼
git checkout -b [branch name]
# 等於
git branch [branch name]
git checkout [branch name]
複製代碼
git push origin [branch name]
# 例如
git push origin dev
複製代碼
git branch -d [branch name]
# 例如
git branch -d dev
複製代碼
git push origin :[branch name]
# 例如
git push origin :dev
複製代碼
# 在 dev 分支開發完成以後
# 要合併到 master
# 提交以後 執行下面命令, 就將 dev 分支合併到了 master
# merge 命令用於合併指定分支到當前分支
git merge dev
複製代碼
# 人生不如意事,十之八九
# 合併分支, 若有衝突, 必須手動解決衝突後提交
Git用<<<<<<<,=======,>>>>>>>標記出不一樣分支的內容
# git log 能夠查看分支合併狀況
git log
# 等於
git log --graph --pretty=oneline --abbrev-commit
複製代碼
# 在修復 bug 時, 建立 issue-001 分支, 此時須要儲藏當前 dev 工做區的內容
# 執行下面命令, 儲藏工做內容
git stash
# 儲藏以後, 工做區是乾淨的
# 修復完bug以後, 返回 dev 分支
# 此時須要恢復前面的內容
# 查看儲藏內容
git stash list
# 1. 恢復工做區內容
git stash apply # 這種恢復不會刪除 stash list 內容
# 刪除 stash 內容
git stash drop
# 2. 恢復工做區內容, 並刪除 stash list 的內容
git stash pop
# 能夠屢次 stash , 恢復時, 先用 git stash list 查看, 而後恢復指定的 stash
git stash apply stash@{0}
複製代碼
# 添加一個新功能, 建立並切換到一個新feature分支
git checkout -b feature-vulcan
# 開發完成以後, 儲藏,提交
git add . && git commit -m "開發完畢"
# 切換到 dev 分支
git checkout dev
# 此功能sp上司不用了, 就須要刪除這個分支
git branch -D feature-vulcan
# 大寫 D, 便可刪除
複製代碼
# 查看遠程庫的信息
git remote
# 詳細的信息
git remote -v
origin git@github.com:username/WorkCentent.git (fetch)
origin git@github.com:username/WorkCentent.git (push)
# 上面顯示了,能夠抓取和推送的分支. 若是沒有推送權限,就看不到 push 地址
# 推送分支 到 marter
git push origin master
# 同步遠程分支到本地
git checkout -b dev origin/dev
複製代碼
git log --pretty=oneline
592f634468af11098f9f4b8e0d47bffe0b144642 (HEAD -> master, origin/master) :penguin: 添加 Git 配置
c74abfe70b1170dbd727717ef823a2abdea66bfb :fire: 提交工做內容
b07144b5e7df4b30416c7b460a12d86c61690c0d :tada: :tada: :tada: Typora 首次提交
# git log 查看提交記錄
# HEAD 表示當前本版, 前面一串數字,就是提交id. 要退回上個版本, 就使用:
git reset --hard HEAD^
# 上上個版本使用:
git reset --hard HEAD^^
# 上100個版本使用:
git reset --hard HEAD~100
# 也可使用 提交id 退回到某個版本, 或者返回以前的某個版本記錄
git reset --hard 592f634
複製代碼
git reflog
# git 會記錄每一次的命令
複製代碼
# 查看修改, 工做區與版本庫最新版本的區別
git diff
# 查看某個文件
git diff HEAD -- README.md
複製代碼
# 提交以前, 丟棄工做區的修改
git checkout -- file
複製代碼
# git status => git st
git config --gloval alias.st status
# git checkout => git co
git config --global alias.co checkout
# git commit => git cm
git config --global alias.cm commit
# git branch => git br
git config --global alias.br branch
# git log ... => git lg
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
複製代碼
是否是意猶未盡?分佈式
Git 的世界至關龐大, 若是諸位看官想系統學習關於祂的知識. 很是樂意奉上收藏已久的幾個網站, 我想看完你會有所收穫的:ide
人心有一種惱人的傾向, 即只把壓倒他的東西稱做命運 -阿爾貝·加繆 -工具