Git 學習

git 是一個版本控制系統。

《看日記學git》非常不錯

http://roclinux.cn/?p=178

這是根據《看日記學git》的一些總結:

git diff –cached是用來查看index file和倉庫之間代碼的區別的

     而如果省略–cached選項的話,就是比較working tree和index file的區別

使用git diff瞭解了不同之後,還可以使用git status命令來獲取整體改動的信息


如果修改了項目代碼,先git add你修改過的文件,再git diff並git status查看確認,然後git commit提交,然後輸入你的開發日誌,最後git log再次確認。

       git commit -a,這個命令可以直接提交所有修改,省去了你git add和git diff和git commit的工序;但是,此處有一點應該注意,那就是git commit -a無                                法把新增文件或文件夾加入進來,所以,如果你新增了文件或文件夾,那麼就要老老實實的先git add .,再git commit嘍。

針對開發日誌,要說一句:切記寫開發日誌的時候,第一行一定要是少於50字的開發概括信息,而且第二行務必是空行,第三行開始纔可以開始細緻描述開發信息。這是因爲很多版本服務系統中的email機制都會選取log中的第一行爲郵件題目。


git log -p,這樣git不但會給出開發日誌,而且會顯示每個開發版本的代碼區別所在。


分支功能:

git branch *       ("*" is the name of branch)

git branch           show the branchs exit;

git checkout name      ("name" is the name of  a branch)change main branch

git merge branchname   ("HAEDname" 是分支的名字)自動將分支併入主支

git branch -d branchname   delete branch,在這裏使用的是小寫的-d,表示“在分支已經合併到主幹後刪除分支”;如果使用大寫的-D的話,則表                                                        示“不論如何都刪除分支”,-D當然使用在“分支被證明失敗”的情況下

總結:

1

任何人在使用git之前,都要提交簡單的個人信息,以便git區分不同的提交者身份。

#git config –global user.name “your name”

#git config –global user.email [email protected]

2

獲得幫助可以使用類似man git-****的命令格式:

想獲得關於commit命令的幫助,則man git-commit

想獲得關於pull命令的幫助,則man git-pull

想獲得關於merge命令的幫助,則man git-merge

以此類推

3

想新開啓一個項目,應該先建立一個目錄,例如名爲myproject,然後所有的項目開發內容都在此目錄下進行。

#cd myproject

#git init

#git add .

#git commit //這個步驟會自動進入編輯狀態,要求提交者輸入有關本次提交的“開發信息”

至此,一個新項目就誕生了,第一個開發信息(開發日誌)也隨之誕生。


4

如果改進了項目源代碼,並且到了開發者認爲“應該再次記錄開發信息”的時候,則提交“工作成果”。

#git commit -a  //這是一個偷懶的命令,相當於git add .; git commit;

但是,此處有一點應該注意,那就是git commit -a無法把新增文件或文件夾加入進來,所以,如果你新增了文件或文件夾,那麼就要老老實實的先git add .,再git commit

5

想檢查到目前爲止對源碼都做了哪些修改(相對於本次工作剛開始之時):

#git diff //這個命令只在git add之前使用有效。如果已經add了,那麼此命令輸出爲空

#git diff –cached //這個命令在git add之後在git commit之前有效。

#git status  //這個命令在git commit之前有效,表示都有哪些文件發生了改動

6

想查看自項目開啓到現在的所有開發日誌

#git log

#git log -p //會輸出非常詳細的日誌內容,包括了每次都做了哪些源碼的修改

7

開啓一個試驗分支(experimental),如果分支開發成功則合併到主分支(master),否則放棄該試驗分支。

#git branch experimental //創建一個試驗分支,名稱叫experimental

#git branch //顯示當前都有哪些分支,其中標註*爲當前所在分支

#git checkout experimental //轉移到experimental分支

(省略數小時在此分支上的開發過程)…

如果分支開發成功:

#git commit -a //在experimental分支改進完代碼之後用commit在此分支中進行提交

#git checkout master //轉移回master分支

#git merge experimental //經證實分支開發成功,將exerimental分支合併到主分支

#git commit -a //徹底完成此次分支合併,即提交master分支

#git branch -d experimental //因爲experimental分支已提交,所以可安全刪除此分支

如果分支開發失敗:

#git checkout master

#git branch -D experimental //由於分支被證明失敗,因此使用-D來放棄並刪除該分支

8

隨時查看圖形化分支信息。

#gitk

9

當合作伙伴bob希望改進我(rocrocket)的工作成果,則:

bob$git clone /home/rocrocket/project myrepo //此命令用於克隆我的工作到bob的myrepo目錄下。請注意,此命令有可能會因爲/home/rocrocket的目錄權限問題而被拒絕,解決方法是chmod o+rx /home/rocrocket。

(省略bob數小時的開發過程)…

bob$git commit -a //bob提交自己的改進成果到自己的git倉庫中,並口頭告知我(rocrocket)他已經完成了工作。

我如果非常非常信任bob的開發能力:

$ cd /home/rocrocket/project

$ git pull /home/bob/myrepo //pull命令的意思是從遠端git倉庫中取出(git-fetch)修改的代碼,然後合併(git-merge)到我(rocrocket)的項目中去。讀者要記住一個小技巧,那就是“git pull .”命令,它和git merge的功能是一樣的,以後完全可以用git pull .來代替git merge哦!請注意,git-pull命令有可能會因爲/home/bob的目錄權限問題而被拒絕,解決方法是chmod o+rx /home/bob。

如果我不是很信任bob的開發能力:

$ cd /home/rocrocket/project

$ git fetch /home/bob/myrepo master:bobworks //此命令意思是提取出bob修改的代碼內容,然後放到我(rocrocket)工作目錄下的bobworks分支中。之所以要放到分支中,而不是master中,就是要我先仔仔細細看看bob的開發成果,如果我覺得滿意,我再merge到master中,如果不滿意,我完全可以直接git branch -D掉。

$git whatchanged -p master..bobworks //用來查看bob都做了什麼

$git checkout master //切換到master分區

$git pull . bobworks //如果我檢查了bob的工作後很滿意,就可以用pull來將bobworks分支合併到我的項目中了

$git branch -D bobworks //如果我檢查了bob的工作後很不滿意,就可以用-D來放棄這個分支就可以了

過了幾天,bob如果想繼續幫助我開發,他需要先同步一下我這幾天的工作成果,只要在其當初clone的myrepo目錄下執行git pull即可:

#git pull //不用加任何參數,因爲當初clone的時候,git已經記住了我(rocrocket)的工作目錄,它會直接找到我的目錄來取。

(以上資料都源自《看日記學git》,Linux大棚網,在此轉載總結,轉載並不完全,有興趣者可自己去網站觀看,網址:http://roclinux.cn/?p=343


發佈了27 篇原創文章 · 獲贊 8 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章