Git相關分享
---- by 程序亦非猿 2016.03.07
這是在公司分享的稿子,演示為主,稿子內容不太詳細,有興趣的可以看看,推薦看看文末的資料~
控制版本系統(tǒng)(VCS)
版本控制是一種記錄一個或若干文件內容變化,以便將來查閱特定版本修訂情況的系統(tǒng)
集中化控制系統(tǒng)(CVCS)
集中化控制系統(tǒng)都有一個單一的集中管理的服務器,保存所有文件的修訂版本,客戶端通過這臺服務器獲取文件或提交更新.

缺點
很明顯,中央服務器是個中心,一旦它出了問題就會影響整個系統(tǒng).
中央服務器單點故障,如果服務器一掛,那么整個系統(tǒng)就掛了,無法工作
甚至,中央服務器磁盤故障,很可能導致數(shù)據(jù)丟失,丟失所有歷史更改記錄等重要信息.
分布式版本控制系統(tǒng)(DVCS)
客戶端并不只提取最新版本的文件快照,而是把代碼倉庫完整地鏡像下來。這么一來,任何一處協(xié)同工作用的服務器發(fā)生故障,事后都可以用任何一個鏡像出來的本地倉庫恢復。因為每一次的提取操作,實際上都是一次對代碼倉庫的完整備份

Git--控制版本之神
簡史
作者,大神 Linus Torvalds
優(yōu)點:
- 速度
- 簡單的設計
- 對非線性開發(fā)模式的強力支持(允許上千個并行開發(fā)的分支)
- 完全分布式
- 有能力高效管理類似 Linux 內核一樣的超大規(guī)模項目(速度和數(shù)據(jù)量)
Git常用命令
config
git config #--global 全局配置
git config --global user.name "alan"
git config --global user.email alancheen06@gmail.com
git config --list 查看配置列表
init
git init用來初始化項目
它會創(chuàng)建一個.git目錄,它包含所有初始化git的所有文件
clone
git clone url
git clone url name #重命名成name
文件的狀態(tài)
接下去的命令跟文件狀態(tài)有關

add
untracked===>staged
git add file
git add .
staged===>untracked
git reset HEAD file
commit
git commit -m "init"
git commit -a -m "init"
git commit -am "init"
git commit --amend #想要撤消剛才的提交操作,可以使用 --amend 選項重新提交
// 演示
branch
創(chuàng)建分支
git branch branchname
PS:當init一個倉庫時,master需要先commit一遍才能新建其他分支,否則會得到一個錯誤
fatal: Not a valid object name:'master'.
切換分支
git checkout branchname
創(chuàng)建并切換分支
git checkout -b branchname
查看分支
git branch -r -a -l
刪除分支
git branch -d branchname #刪除本地分支
git push origin --delete branchname #刪除遠程分支
// 演示
遠程協(xié)作
git remote add [shortname] url
如:
git remote add origin url #
git remote -v 可以查看所有遠程倉庫
fetch
git fetch remote-name
fetch 只是從遠程倉庫 獲取數(shù)據(jù),并不會合并到工作區(qū)
pull
git pull origin master
pull = fetch +merge
push
git push [remote-name] [branch-name]
git push origin master
查看提交歷史
git log 查看提交歷史
- --pretty=oneline 一行顯示
- --stat 帶統(tǒng)計信息
- --graph 圖形化
git reflog
回退版本
git reset --hard commitId
暫存
git stash/pop
標簽
git tag
幫助
git help cmdname
....
別名
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.unstage 'reset HEAD --'
git config --global alias.last 'log -1 HEAD'
其他
gitignore
忽略不想提交的文件
gitflow
基于git的工作流
工具推薦
SourceTree
git GUI 軟件
iTerm2+oh my zsh
不管裝不裝逼,都要必備
學習資料推薦
GitPro2
內容很多,很詳細,堪稱權威,而且還有中文版,還有pdf等下載,一定要看看.
git-簡明指南(很棒)
非常棒的指南,極力推薦
githug
一個git的游戲,現(xiàn)在一共有54個關卡,從init開始,讓你在玩的過程中學習git,挺有意思
learnGitBranching
又是一個學習git的游戲,不過這個是針對分支的游戲,非常棒~非常推薦
另外歡迎關注:
我的Github
我的微博
我的微信公眾號:
