Git 是一個開源的分佈式版本控制軟件,用以有效、高速的處理從很小到很是大的項目版本管理。 Git 最初是由Linus Torvalds設計開發的,用於管理Linux內核開發。Git 是根據GNU通用公共許可證版本2的條款分發的自由/免費軟件,安裝參見:http://git-scm.com/git
GitHub是一個基於Git的遠程文件託管平臺(同GitCafe、BitBucket和GitLab等)。github
Git自己徹底能夠作到版本控制,但其全部內容以及版本記錄只能保存在本機,若是想要將文件內容以及版本記錄同時保存在遠程,則須要結合GitHub來使用。使用場景:緩存
其餘:服務器
集中式:遠程服務器保存全部版本,用戶客戶端有某個版本
分佈式:遠程服務器保存全部版本,用戶客戶端有全部版本app
git的工做原理仍是比較簡單的,當咱們建立了本地代碼倉庫後,會在本地代碼倉庫的根目錄中生成一個.git的隱藏文件。分佈式
.git爲一個文件目錄,又叫作版本庫。在本地代碼倉庫文件夾中,除.git目錄以外的全部與.git同級的目錄及其子目錄都叫作工做區。設計
工做區(Working Directory):倉庫文件夾裏出.git目錄之外的內容版本控制
版本庫(Repository):.git目錄,用於存儲記錄版本信息指針
暫緩區(stage),分支(master):git自動建立的第一個分支blog
HEAD指針:用戶指向當前分支
git add:把文件修改或者新添加的的文件添加到暫存區
git commit:把暫存區的全部內容提交到當前分支
下圖就能夠解釋git add 和 git commit的原理:
git init 初始化 git add filename.txt 添加要往遠程傳的文件到一個臨時列表 git commit -m "xxx" # 說明爲啥上傳 git push origin master # 上傳 git clone https://github.com/triaquae/Weibo # 克隆遠程的項目 git status 查看修改結果 git log 查看修改過幾回 git reflog 查看修改事後全部歷史操做 git log --pretty=oneline 查看修改過的全部版本 git reset --hard 加版本 回滾到哪一個版本 git reset --hard head^ 回滾到上個版本 git reset --hard head^^ 回滾到上上(回滾到上兩個)個版本 git reset HEAD filename.txt 撤回提交到暫存區的操做 git checkout --filename.txt 撤銷工做區操做(能夠多個文件) git rm filename.txt 刪除暫存區 git checkout -b "dev" 建立分支(引號裏是分支名) git push origin xxx 提交到分支庫(xxx表示分支名) git branch 查看分支 git checkout dev 切換到分支庫 git merge dev 合併分支庫到主庫(dev表示分支庫) git pull 拉遠程庫的文件 git stash 緩存工做區的內容 git stash list 查看暫存區的內容 git stash apply 把暫存區的內容恢復到工做區 git stash pop 把暫存區的內容恢復到工做區而且把暫存區的刪除 版本回退: git reset --hard HEAD : 回退到當前的版本 git reset --hard HEAD^ : 回退到上一個版本 git reset --hard HEAD^^ : 回退到上上個版本 git reset --hard HEAD~100 : 回退到前100版本 git reset --hard 版本號(前5位) 咱們修改或者新添加的文件起初是處於工做區,經過git add命令能夠把工做區的文件移動到版本庫中的暫緩區(stage)。 處在暫緩區(stage)的代碼能夠經過git commit -m 「提交的註釋」 提交到版本庫中的分支(master)。 處在分支(master)中的代碼能夠經過git push命令push到共享版本庫。 注意:只有分支中的文件才能夠push到共享版本庫。