svn集中式:版本庫是集中存放在中央服務器的,須要聯網才能工做 git
git 分佈式:每一個人的電腦上都是一個完整的版本庫 github
和集中式版本控制系統相比,分佈式版本控制系統的安全性要高不少,由於每一個人電腦裏都有完整的版本庫,某一我的的電腦壞掉了沒關係,隨便從其餘人那裏複製一個就能夠了。而集中式版本控制系統的中央服務器要是出了問題,全部人都無法幹活了。安全
初始化倉庫:git init
服務器
把文件添加到倉庫:git add a.txt
添加到暫存區(state)markdown
把文件提交到倉庫:git commit -m '註釋信息'
ssh
倉庫狀態:git status
分佈式
查看修改內容:git diff
svn
顯示最近到最有遠的提交日誌:git log
(git log --pretty=oneline
)spa
git reset --hard HEAD^
回退到上一版本git reset --hard HEAD^
回退到上上版本git reset --hard HEAD~100
回退到上100個版本git reset --hard 具體版本號
回退到具體版本號記錄每一次命令 : git reflog
版本控制
git checkout -- readme.txt
:
命令git checkout -- readme.txt
意思就是,把readme.txt
文件在工做區的修改所有撤銷,這裏有兩種狀況:
一種是readme.txt
自修改後尚未被放到暫存區,如今,撤銷修改就回到和版本庫如出一轍的狀態;
一種是readme.txt
已經添加到暫存區後,又做了修改,如今,撤銷修改就回到添加到暫存區後的狀態。
總之,就是讓這個文件回到最近一次git commit
或git add
時的狀態。
刪除文件後,Git知道你刪除了文件,所以,工做區和版本庫就不一致了,git status
命令會馬上告訴你哪些文件被刪除了:
如今你有兩個選擇,一是確實要從版本庫中刪除該文件,那就用命令git rm filename
刪掉,而且git commit
另外一種狀況是刪錯了,由於版本庫裏還有呢,因此能夠很輕鬆地把誤刪的文件恢復到最新版本: git checkout -- filename
git config -- global user.name 'GitHub用戶名 '
git config --global user.email '註冊郵箱'
ssh-keygen -t rsa -C 'GitHub的註冊郵箱'
git remote add origin 遠程倉庫地址
:關聯遠程倉庫
git remote rm origin
:刪除關聯
git push origin master
: 推送 (第一次 加上-u 就會一直關聯這個地址,就不須要再寫origin master)
git pull origin master --allow-unrelated-histories
:若是本地倉庫和遠程庫有衝突,好比GitHub上有markdown文件,則加上 --allow-unrelatered..
git clone git@github.com:rottengeek/test.git
:克隆遠程庫到本地
git branch 分支名
:建立分支
git checkout 分支名
:切換分支
git checkout -b 分支名
:建立與切換同時進行
git branch
:列出全部分支
git merge dev
:把dev分支的工做成果合併到master分支上
git branch -d 分支名
: 刪除分支
在實際開發中,咱們應該按照幾個基本原則進行分支管理:
首先,master
分支應該是很是穩定的,也就是僅用來發布新版本,平時不能在上面幹活;
那在哪幹活呢?幹活都在dev
分支上,也就是說,dev
分支是不穩定的,到某個時候,好比1.0版本發佈時,再把dev
分支合併到master
上,在master
分支發佈1.0版本;
你和你的小夥伴們每一個人都在dev
分支上幹活,每一個人都有本身的分支,時不時地往dev
分支上合併就能夠了。
因此,團隊合做的分支看起來就像這樣: