歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Ubuntu下git安裝與使用筆記

Ubuntu下git安裝與使用筆記

日期:2017/2/28 16:10:59   编辑:Linux教程

GIT 是用於 Linux 內核開發的版本控制工具。與常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本庫的方式,不必服務器端軟件支持,使源代碼的發布和交流極其方便。 Git 的速度很快,這對於諸如 Linux kernel 這樣的大項目來說自然很重要。 Git 最為出色的是它的合並跟蹤(merge tracing)能力。

安裝:

第一步:sudo apt-get install git git-core 來安裝GIT程序,或者到新立得軟件包裡面 輸入 git然後安裝。

第二步:如果你已經安裝好git那麼通過下面命令來更新版本庫。
git clone git://git.kernel.org/pub/scm/git/git.git
第三步:創建一個版本庫git-init-db
創建一個 Git 版本庫是很容易的,只要用命令 git-init-db 就可以了

$ mkdir gittutorcn
$ cd gittutorcn
$ git-init-db

這樣,一個空的版本庫就創建好了,並在當前目錄中創建一個叫 .git 的子目錄。你可以用 ls -a 查看一下,並請注意其中的三項內容:
一個叫 HEAD 的文件,我們現在來查看一下它的內容:

$ cat .git/HEAD

現在 HEAD 的內容應該是這樣:

ref: refs/heads/master

我們可以看到,HEAD 文件中的內容其實只是包含了一個索引信息,並且,這個索引將總是指向你的項目中的當前開發分支。
一個叫 objects 的子目錄,它包含了你的項目中的所有對象,我們不必直接地了解到這些對象內容,我們應該關心是存放在這些對象中的項目的數據。
一個叫 refs 的子目錄,它用來保存指向對象的索引。
具體地說,子目錄 refs 包含著兩個子目錄叫 heads 和 tags,就像他們的名字所表達的意味一樣:www.linuxidc.com他們存放了不同的開發分支的頭的索引, 或者是你用來標定版本的標簽的索引。

請注意:master 是默認的分支,這也是為什麼 .git/HEAD 創建的時候就指向 master 的原因,盡管目前它其實並不存在。 git 將假設你會在 master 上開始並展開你以後的工作,除非你自己創建你自己的分支。

另外,這只是一個約定俗成的習慣而已,實際上你可以將你的工作分支叫任何名字,而不必在版本庫中一定要有一個叫 master 的分支,盡管很多 git 工具都認為 master 分支是存在的。

現在已經創建好了一個 git 版本庫,但是它是空的,還不能做任何事情,下一步就是怎麼向版本庫植入數據了。
第四步:植入內容跟蹤信息:git-add:
為了簡明起見,我們創建兩個文件作為練習:

$ echo "Hello world" > hello
$ echo "Silly example" > example

我們再用 git-add 命令將這兩個文件加入到版本庫文件索引當中:
$ git-add hello example
git-add 實際上是個腳本命令,它是對 git 內核命令 git-update-index 的調用。因此上面的命令和下面的命令其實是等價的:
$ git-update-index --add hello example
如果你要將某個文件從 git 的目錄跟蹤系統中清除出去,同樣可以用 git-update-index 命令。例如:
$ git-update-index --force-remove foo.c
git-add 可以將某個目錄下的所有內容全都納入內容跟蹤之下,例如: git-add ./path/to/your/wanted 。但是在這樣做之前,應該注意先將一些我們不希望跟蹤的文件清理掉,例如,gcc 編譯出來的 *.o 文件,vim 的交換文件 .*.swp 之類。

應該建立一個清晰的概念就是,git-add 和 git-update-index 只是刷新了 git 的跟蹤信息,hello 和 example 這兩個文件中的內容並沒有提交到 git 的內容跟蹤范疇之內。

第五步:提交內容到版本庫:git-commit
既然我們刷新了 Git 的跟蹤信息,現在我們看看版本庫的狀態:
$ git-status
我們能看到 git 的狀態提示:

#
# Initial commit
#
#
# Updated but not checked in:
# (will commit)
#
# new file: example
# new file: hello
#

提示信息告訴我們版本庫中加入了兩個新的文件,並且 git 提示我們提交這些文件,我們可以通過 git-commit 命令來提交:

$ git-commit -m "Initial commit of gittutor reposistory"

第六步:查看當前的工作:git-diff
git-diff 命令將比較當前的工作目錄和版本庫數據庫中的差異。www.linuxidc.com現在我們編輯一些文件來體驗一下 git 的跟蹤功能。
$ echo "It's a new day for git" >> hello
我們再來比較一下,當前的工作目錄和版本庫中的數據的差別。
$ git-diff
差異將以典型的 patch 方式表示出來:

diff --git a/hello b/hello
index 802992c..8fdaa4e 100644
--- a/hello
+++ b/hello
@@ -1 +1,2 @@
Hello world
+It's a new day for git

此時,我們可以再次使用組合命令 git-update-index 和 git-commit 將我們的工作提交到版本庫中。

$ git-update-index hello
$ git-commit -m "new day for git"

實際上,如果要提交的文件都是已經納入 git 版本庫的文件,那麼不必為這些文件都應用 git-update-index 命令之後再進行提交,下面的命令更簡捷並且和上面的命令是等價的。
$ git-commit -a -m "new day for git"

一些命令:
初始化git數據庫
$ git-init-db
添加文件
$ git-add hello.c
查看修改、提交記錄
$ git-log
創建分支
$ git-branch roredu
查看分支
$ git-branch
* master
roredu
切換工作分支
$ git-checkout roredu
Switched to branch "roredu"

$ git-branch
master
* roredu

提交到當前工作分支並書寫標記。
$ git-commit -a
創建xux分支對於master的補丁文件。
$ git-format-patch master roredu
配置開發者自己的簽名和email。
$ git-config --global user.name "roredu"
$ git-config --global user.email "[email protected]"

修改文件名
$ git-mv roredu.c helight.c
刪除文件
$ git-rm roredu.c

協同工作,下載項目:
git-clone ssh@wtb:192.168.0.21/home/wtb/NetBeansProjects/project1
這裡wtb是用戶名, 192.168.0.21是項目所在機器的IP 後面跟著的是項目目錄和名稱

Copyright © Linux教程網 All Rights Reserved