基于linux ubuntu git安裝與配置
1.安裝git
># sudo apt-get build-dep git-core git-doc
這個會安裝git-core和git-doc依賴的庫。
接下來去官網下載下傳git的源碼包。把下載下傳的git包解壓。
在解壓的目錄下執行下列的指令來編譯git
>#make prefix=/usr/local all doc
然後需要安裝git
>#sudo make install install install-doc
這樣你的git就可以被該計算機上的所有使用者使用了。
你可以使用下面的指令來檢視自己的git版本号。
>#git --version
**********************************************
CentOS下面安裝:
rpm -Uvh http://yum.beta.gist.com/gist/centos/5/RPM/epel-release-5-3.noarch.rpm
yum -y install git gitweb gitosis
2.配置git
由于git并不像svn那樣有中心倉庫,是以并不需要想中心倉庫提供使用者名和密碼等。但是我們還是需要告訴
要通過使用者名和email位址來給git傳遞一些資訊。這些資訊通常被設定為global。這裡必須設定的兩個是user.name
和user.email。user.name是送出代碼時顯示的名稱,user.email可以被其他開發者用于聯系你使用。
>#git config --global user.name "your name"
>#git config --global user.email "[email protected]"
然後我們可以通過下面的指令來檢視是否修改成功了呢。
>#git config --global --list
我們應該會看到我們剛才配置的資訊。
除此之外,還可以調整git的顯示顔色來區分不同的變化。
>#git config --global color.ui "auto"
3.檢視git幫助
>#git help
指令可以檢視git的指令
The most commonly used git commands are:
add Add file contents to the index
bisect Find by binary search the change that introduced a bug
branch List, create, or delete branches
checkout Checkout a branch or paths to the working tree
clone Clone a repository into a new directory
commit Record changes to the repository
diff Show changes between commits, commit and working tree, etc
fetch Download objects and refs from another repository
grep Print lines matching a pattern
init Create an empty git repository or reinitialize an existing one
log Show commit logs
merge Join two or more development histories together
mv Move or rename a file, a directory, or a symlink
pull Fetch from and merge with another repository or a local branch
push Update remote refs along with associated objects
rebase Forward-port local commits to the updated upstream head
reset Reset current HEAD to the specified state
rm Remove files from the working tree and from the index
show Show various types of objects
status Show the working tree status
tag Create, list, delete or verify a tag object signed with GPG
如果想檢視git的具體指令使用可以通過下面指令做到,例如檢視clone指令。
>#git help clone
到這我們已經配置好我們的git了,接下來就可以建立我們的工程了。
建立工程
1.建立一個版本庫
git的版本庫建立跟svn和cvs相比,可能顯得很是與衆不同。在git中建立版本庫隻需要在你的工程目錄下執行簡單的指令就可以做到。
例如我們建立一個工程目錄 project,然後在此目錄下初始化我們的版本庫吧。
># mkdir project
>#cd project
>#git init
在我們執行完git init 後執行以下 ls -a 我們就可以看到在project目錄下生成了一個.git目錄,這個目錄就是用來記錄我們送出的版本資訊的了。
project目錄就是我們工作的工程目錄了。
2.添加檔案并送出
通過上面的步驟我們隻是獲得了一個空的版本庫,下面開始向版本庫中添加檔案。例如我們新建立了一個檔案hellogit.c
>#touch hellogit.c
如何把這個檔案加入到版本庫中呢,需要兩步,首先要用git add 指令告訴git去把此檔案加到它的索引。然後執行git commit送出。
這個和svn的過程一樣一樣滴。
>#git add hellogit.c
>#git commit -m "first add"
commit可以檔案清單,例如git commit hellogit.c hello.c -m “ second add”。如果什麼都不寫就會送出所有改變的檔案。
-m後面引号内是必須要填寫的送出log,交代你做了那些改動。
3.檢視改動和日志
如果我們對hellogit.c的内容做了改動。
>#git status
指令就可以檢視本地工程和版本庫的有什麼變化。在本例子中
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: hellogit.c
你會看到如下資訊,資訊中顯示了我們對hellogit.c進行了修改。但是還沒有送出到庫上。
我們需要執行commit指令告訴git變化,注意這次不需要在add了,一個檔案隻需要add一次就可以了。
>#git commit hellogit.c -m "second add" \
-m "add mian"
注意git支援多個-m,多行注釋,很棒喲。
然後我們可以通過git log -l來檢視送出過的日志檔案
>#git log -l
git基本操作
>git log -1
顯示一條版本送出日志
>git status
顯示目前本地代碼與版本庫之間的變化
>git branch branch_1.0 master
從主幹分支上建立一個branch_1.0分支出來
>git checkout branch_1.0
檢出branch_1.0這個分支到工作目錄,此時在執行的操作全都是在branch_1.0下了,不會影響master。
>git commit -a
送出目前本地改變的到版本庫
git checkout不僅可以檢出版本,也可以選擇檢出某個檔案,這樣做的結果是會丢棄本地該檔案的修改,是以要考慮好再用喲。
>git checkout filename.java
當我們的項目到達一定的git還支援為版本庫添加一個tag,作為一個階段性标記。
>git tag 1.0 branch_1.0
這樣我們就為branch_1.0添加了一個tag,我們可以通過
>git tag
指令檢視tag的清單。
現在我們擁有master和branch_1.0兩個分支,有時我們可能需要合并我們的分支。
>git checkout master
切換到主分支
>gti rebase branch_1.0
此時branch_1.0會被合并到主分支中,我們可以清除掉branch_1.0這個沒用的分支了。
>git branch -d branch_1.0
因為我們之前為branch_1.0打過tag,即使分支已經删除,我們還是可以從tag中從新建立新的分支的喲。
>git branch branch_1.0.1 1.0
這樣就從tag 1.0這個tag的曆史位置從新建立了一個新的分支,是不是很友善呀。
>git checkout branch_1.0.1
>git log --pretty=oneline
這樣我們還是可以看到在打1.0tag之前的log資訊的。
除了打tag之外,git還為我們提供了一另外一個方式。就是可以建立我們發行版本的檔案。通常是tarball或是zip檔案
那麼如何建立gzip的tarball呢
>git archive --format=tar \
--prefix=myprogect/ 1.0 \
| gzip > myproject.tar.gz
在這個指令裡有3個參數
--format 告訴git庫生成的檔案是tar
--prefix告訴git庫把myproject目錄下的tag是1.0的内容儲存到備份的檔案中。
最後一行使用了一條unix指令,把輸出檔案壓縮成tar.gz包。
除了生成tar.gz包外,還可以生成zip包,指令如下
git archive --format-zip \
--prefix=myproject/ 1.0 \
>myprogect.zip
這樣就打包成了一個zip包了。你可以把這些檔案發給你的團隊其它成員了喲。
git操作進階(分支,合并,查不同) >#git add -i
采用互動的方式将工作區代碼加入本地代碼緩沖區中
>#git add -p
出現選項y/n/a/d/e
如果選擇y将工作區代碼加入本地代碼緩沖區中,選擇n或是d終止送出操作,選擇a添加
送出代碼到中心倉庫的方法
1.>#git add some-file
#git commit -m "some word"
适合添加簡單的注釋時使用
2. # git commit -m "some word" -a
送出本地所有改變的代碼到中心庫
3 # git commit -m " some word" some-file
送出指定檔案名的檔案到中心庫
檢視不同
#git diff
結果顯示本地工作區中還沒有送出到緩沖區
#git diff --cached
顯示緩沖區與中心倉庫中的不同
#git diff HEAD
比較本地工作區與緩沖區和中心倉庫的不同
檔案重命名和移動
#git mv index.html hello.html
修改了檔案名
修改後需要送出變化
#git commit -m "rename index.html"
了解和使用分支
#git branch -m master mymaster
#git branch
修改了master的名字為mymaster
#git branch newbranch
建立了一個newbranch分支,但是此時的工作分支仍然是master,需要去哦git chekout newbranch後才會切換分支。
通過下面的指令可以做到建立分支的同時切換分支
#git checkout -b another master
這樣就從master分支中生成一個another分支,并把分支切換到another下。
#git branch -a
顯示本地和遠端的所有分支
删除分支
#git branch -d branch-name
分支重命名
#git branch -m orgin-name new-name
在分支間轉移變化
轉移分為三種:
1.Straight merging
檢出工作分支
#git checkout master
轉移要送出到目前分支的分支
#git merge alternate
alternate為要合并到master中的分支
此種方法會将alternate中的所有log資訊存入到master中
2.squashing commits
有兩個分支master分支和contact分支
将contact合并到master中
#git merge --sqush contact
還需要執行git commit -m ""後送出變化
這種送出方式會将contact的log資訊要鎖到一次性送出的log中
3.cherry-pick commit
這是一種通過送出名稱來合并的方法,可以隻合并一次或指定次送出
#git checkout contact
檢出一個分支
#git commit -m "add something"
此時會出現送出資訊,假如送出号是:321d76f
我們就可以通過這個号來将這次送出内容同步到其它分支了
#git cherry-pick 321d76f
這個執行過程git已經執行了一個commit過程。
如果有的時候我們要直接送出怎麼辦呢?
#git cherry-pick -n 321d76f
通過添加-n參數,git隻會将變化送出到緩存中,沒有執行commit
待你修改完其它後可以一起commit了
#git commit
恢複變化
#git reset --hard HEAD
可以移除最後一次送出過程