轉自:http://www.cnblogs.com/idche/archive/2011/07/05/2098165.htmlGIT
學習筆記
集中化的版本控制系統 CVCS(Centralized Version Control System)
分佈式版本控制系統 DVCS(Decentralized Version Control System)
Git 基礎要點 http://progit.org/book/zh/ch1-3.html
1:直接快照,而非比較差別
2:近乎全部操做均可本地執行
3:時刻保持數據完整性 (Git 使用 SHA-1 算法計算數據的校驗 ,40 個十六進制字符(0-9 及 a-f)組成)
4:多數操做僅添加數據
5:三種狀態(已提交(committed),已修改(modified)和已暫存(staged))
GIT安裝 http://progit.org/book/zh/ch1-4.html
配置GIT http://progit.org/book/zh/ch1-5.html
$ git config --global user.name "John Doe" //global對全部的repo都有效
$ git config --global user.email johndoe@example.com
查看配置
git config --list
1. GIT 基礎
初始化倉庫
$ git init
$ git add *.c
$ git add README
$ git commit -m 'initial project version'
從現有倉庫克隆
$ git clone git://github.com/schacon/grit.git
倉庫狀態
$ git status
跟蹤新文件
$ git add fileName
忽略某些文件
$ cat .gitignore
*.[oa] //忽略以 .o 或 .a 結尾的文件
*~ //忽略全部以波浪符(~)結尾的文件
查看已暫存和未暫存的更新
$ git diff
$ git diff --cached //已經暫存起來的文件和上次提交時的快照之間的差別
提交更新
$ git commit -m "message" // 簡單的提交方式
$ git commit -a -m "message" // 跳過add 步驟 把已經跟蹤的文件所有提交
移除文件
$git rm fileName
$ git rm --cached readme.txt //移除跟蹤但不刪除文件
移動文件
$ git mv file_from file_to
日誌
$ git log
$ git log –p -2 // -p 提交內容的差別 -2最近兩次
$ git log --stat//顯示簡要的增改行數統計
修改最後一次提交
$ git commit --amend
//---第2次提交修改了第一次提交
$ git commit -m 'initial commit'
$ git add forgotten_file
$ git commit --amend
取消已經暫存的文件
$ git reset HEAD fileName
取消對文件的修改(回退到之前未修改的狀態) //頗有用 也很危險
$ git checkout -- fileName
2. 遠程倉庫的使用
查看當前的遠程庫
$ git remote -v // -v 列出遠程地址
添加遠程倉庫
$ git remote add Name git://github.com/paulboone/ticgit.git
從遠程倉庫抓取數據
$ git fetch [remote-name]
$ git pull// 合併遠程的所有分支到本地(不肯定)
推送數據到遠程倉庫
$ git push origin master //推送 origin 到 master
查看遠程倉庫信息
$ git remote show origin
遠程倉庫的刪除和重命名
$ git remote rename pb paul// pb 改爲 paul 分支對應前綴也會發生變化
$ git remote rm paul// 貌似刪除
本地分支重命名
$ git branch -m <old_branch> <new_branch>
3. 打標籤 http://progit.org/book/zh/ch2-6.html
列顯已有的標籤
$ git tag
$ git tag -l 'v1.4.2.*'//搜索標籤
新建標籤
$ git tag -a v1.4 -m 'my version 1.4' //新建v1.4標籤 消息是 my version 1.4
分享標籤
$ git push origin [tagname] //提交 一個標籤
$ git push origin --tags // 推送全部本地標籤
刪除
$ git tag -d [tagname] //刪除標籤
$ git push origin :refs/tags/tagname //刪除遠程標籤
4. 技巧和竅門
提示 // 敲兩次tab
Git 命令別名
$ git config --global alias.co checkout // git co 代替了 git checkout
$ git config --global alias.st status
$ git config --global alias.ci commit
$ git config --global alias.br branch
$ git config --global alias.unstage reset HEAD --
$ git config --global alias.last log -1 HEAD
固然這裏最好是經過修改 vi ~/.gitconfig文件,格式如
[alias]
st = status
.....
5. 分支
建立分支
$ git branch testing // 建立testing
$ git checkout testing// 切換到testing
$ git checkout -b iss53 //建立並切換到iss53
$ git merge hotfix //把hotfix 分支合併到當前分支
查看分支
$ git branch -v//最後一次commit信息
$ git branch --merged | --no-merged//篩選出你已經(或還沒有)與當前分支合併的分支
刪除
$ git branch -D testing
推送
$ git push origin serverfix//把當前推送到 serverfix分支,省略遠程分支名,代表當前分支和遠程分支存在追蹤關係,一樣本地分支名也是能夠省略的
$ git push <遠程主機名> <本地分支名>:<遠程分支名> //和pull相反, git pull <遠程主機> <來源地_遠程分支名>:<目的地_本地分支名>
更新同步 $ git fetch
刪除遠程分支 git push origin :branchname git branch –r //查看全部分支信息 //獲取遠端分支 $ git checkout -b sf origin/serverfix
6. 服務器上的GIT ---http://progit.org/book/zh/ch4-3.html
生成 SSH 公鑰 ---http://github.com/guides/providing-your-ssh-key。 $ cd ~/.ssh //公鑰的位置 $ ls authorized_keys2 id_dsa known_hosts config id_dsa.pub $ ssh-keygen //若是上面看不到公鑰 能夠用次來建立 會要求輸入存放位置 和密碼
7. 儲藏 $ git status //儲藏 $ git stash list//儲藏列表 $ git stash apply//應用儲藏 參考資料 http://zh.wikipedia.org/wiki/Git http://progit.org/book/zh/