分類  >  Web前端 >

創辦一個 Git 版本庫

tags:    時間:2013-12-10 19:42:40
創建一個 Git 版本庫

創建一個 Git 版本庫

$ cd project/
$ git init # 創建 .git 目錄 ( 1.4.4.4 版本之後用這個命令 )
$ git add . # 將那些未被跟蹤的文件加入版本庫中
$ git commit # 將工作目錄的變化提交到版本庫中

Git 將根據在版本庫根目錄中的 .gitignore 文件中列出的文件名, 忽略對那些文件的跟蹤, 文件和目錄名,可以用 shell 正則表達式來表示。

分支與合併

$ git checkout -b linux-work  # 創建一個名叫 "linux-work" 的分支
$ <make changes>
$ git commit -a
$ git checkout master # 回到主分支
$ git merge linux-work # 將在 linux-work 分支上的變更集合併入 master 分支
# (適用於 Git 1.5 以上版本)
$ git pull . linux-work # 將在 linux-work 分支上的變更集合併入 master 分支
# (適用於 Git 的所有版本)

引入補丁

$ git apply < ../p/foo.patch
$ git commit -a

生成補丁

$ <make changes>
$ git commit -a -m "commit message"
$ git format-patch HEAD^ # 生成一個 0001-commit-message.patch 的文件
# ( 這裡的意思是生成當前分支的最新版本到他的父版本 HEAD^
# 的所有文件的補丁,當然你應該知道 HEAD 的概念是什麼 )

網路功能

# 從主版本庫中克隆

foo$ git clone git://git.kernel.org/pub/scm/git/git.git
foo$ cd git

# 將本地變更推入遠程版本庫

foo$ git push user@example.com:my-repository.git/

# 抓取遠程版本庫中的其中一個分支到本地版本庫

foo$ git fetch user@example.com:my-repository.git/ remote-branch:local-branch

# 將遠程版本庫中的變化合併到本地

bar$ git pull git://foo/repo.git/ branch

# 用 git 協議建立版本庫服務

foo$ cd /my/repository/
foo$ touch .git/git-daemon-export-ok
foo$ git daemon # 這樣其他人就可以通過 git://your.machine/my/repository/.git/ 來抓取版本庫

# 建立一個裸版本庫( 沒有工作目錄的 )

foo$ mkdir my-repo.git
foo$ cd my-repo.git
foo$ git --bare init
foo$ chmod a+x .git/hooks/post-update # 用 HTTP 協議來傳輸版本時要這樣
# 並且你需要用 push 命令來植入你的版本庫的內容

查看各個版本

# 用圖形界面工具查看歷史

foo$ gitview # 這個命令打開圖形界面窗口,你可以從中看到版本的歷史沿革關係

# 查看日誌

foo$ git log # 輸出當前分支的日誌
foo$ git log -p # 輸出日誌,並同時在每個提交信息之後顯示補丁

# 查看指定的變更

foo$ git show HEAD # 顯示變更信息,差異比較位置,
# 以及到當前分支最新狀態的補丁。

查看歷史記錄

# 根據名稱查看

foo$ git log v1.0.0 # 列舉歷史記錄至標籤 "v1.0.0"
foo$ git log master # 列舉 "master" 分支的歷史記錄

# 根據名稱關聯查看

foo$ git show master^ # 檢查 master 分支的最後一個父版本的內容
foo$ git show master~2 # 檢查 master 祖父版本的最後內容
foo$ git show master~3 # 檢查 master 曾祖父的最後內容

# 根據 "git describe" 的輸出

foo$ git show v1.4.4-g730996f # 你可以用 "git describe" 命令得到這個輸出

# 根據哈希序列號(在 git 內部,所有的對象都是由哈希序列號來標記的)

foo$ git show f665776185ad074b236c00751d666da7d1977dbe
foo$ git show f665776 # 通常你只要輸入前幾個數字已經足夠

# 製作標籤

foo$ git tag v1.0.0 # 將當前 HEAD 製作為 "v1.0.0" 的標籤
foo$ git tag interesting v1.4.4-g730996f # 標記你感興趣的東西(不是 HEAD)

比較版本記錄

# 比較兩個分支的差異
foo$ git diff origin..master # 比較 origin 與 master 的差異並輸出至終端
foo$ git diff origin..master > my.patch # 輸出到 my.patch 文件

# 取得尚未提交的工作於版本記錄的差異
foo$ git diff --stat HEAD

"摘草莓"補丁

foo$ git cherry-pick other-branch~3     # 將另外一個分支的第四個補丁應用到當前分支

推薦閱讀文章

Bookmark the permalink ,來源:互聯網