git:分佈式。開發者能夠提交到本地,每一個開發者機器上都是一個完整的數據庫。兩個開發者之間,能夠經過打patch的方式交換文件。
git
svn:集中式。所謂 git 服務器,是指你們約定使用同一個網址提交、更新代碼。這個網址能夠是任何一個開發機。github
git 創建 branch 的速度更快,由於只保存增量。svn 的 branch 是一份完整的代碼拷貝。數據庫
git 工做區、暫存區的概念xcode
保存文件後,進入工做區安全
git add 後,進入暫存區ruby
git commit 後->產生提交記錄,這時只要文件系統是好的,而且不執行 git reset --hard,那麼你的全部修改都已經被安全的記錄下來了服務器
git push 後 ->代碼進入倉庫,這時別人能夠獲取到你的代碼了curl
剛接觸git時,容易混淆的幾個命令分佈式
git reset --path:是git add 的反向操做。ide
git revert :不能指定單個文件,只能指定一個commid id,撤銷此次commit的全部修改。撤銷行爲自己也會成爲一個commit。
git checkout --path:不指定commit id時,是用暫存區的文件覆蓋工做區的文件,不然用commit id中的文件版本,覆蓋暫存區中和工做區中對應的文件。
經常使用的 svn 命令跟 git 命令做比較
svn | git | 備註 | |
更新 | git fetch --all git pull origin/xxx_branch |
git fetch — all 用來獲取 git 倉庫的 branch 更新信息; 若是指定了 track branch,git pull 能夠不跟參數。 | |
提交 | git add xxx git commit -m 「message" git push origin local:remote |
||
Update to Version | git checkout commit_id -- file |
git 裏的 commit id至關於 svn 的 version | |
顯示資源歷史記錄 | git log / gitk | 下面有 gitk 在 mac 系統的安裝方法 | |
還原 | 丟棄本次修改到最近一次 commit 的狀態: git checkout -- file |
SVN 的還原是指,丟棄本次修改,將文件或目錄還原到與服務器一致的狀態。 git 沒有中央服務器的概念,所以「還原」能夠理解爲,將指定文件或目錄,更新爲最近一次提交的版本。 |
其餘經常使用的 git 命令
git pull --rebase 本地有一些 commit 的前提下,但願 merge 遠程代碼,同時保留以前的 commit 信息。
git cherry-pick 經過 git log 命令,找到某一個 commit id,但願只 merge 這次 commit 的內容。
repo
有一個 manifest.xml 文件,記錄若干git倉庫,例如 AOSP 的管理。
gitk on Mac
一、命令行安裝 HomeBrew
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)""
二、安裝最新版 git
http://www.moncefbelyamani.com/how-to-install-xcode-homebrew-git-rvm-ruby-on-mac/
Step 3: Install Git
介紹git hook的好文章