linux系統下git使用
轉載:http://www.cnblogs.com/bear2flymoon/p/4335364.html?ADUIN=563508762&ADSESSION=1430887070&ADTAG=CLIENT.QQ.5401_.0&ADPUBNO=26464
身邊的技術大牛一直都建議我使用git進行代碼管理,而我每次都把這件事情忘之腦後。最近,好像感覺到了git的重要性。下面是最簡單的使用git的入門方法,僅適用於像熊二飛月這樣的菜鳥級git選手。
Git是一個分布式版本控制軟件,原是Linux內核開發者Linus Torvalds為更好地管理Linux內核開發而設計的。
主要功能
Git是用於Linux內核開發的版本控制工具。與CVS、Subversion一類的集中式版本控制工具不同,它采用了分布式版本庫的方法,不需要服務器端軟件,就可以運作版本控制,使得源代碼的發布和交流及其方便。Git的速度很快,這對於諸如Linux內核這樣的大項目來說自然很重要。Git最為出色的是它的合並追蹤(merge tracing)能力。
實際上內核開發團隊決定開始開發和使用Git來作為內核開發的版本控制系統的時候,世界上開源社區的反對聲音不少,最大的理由是Git太艱澀難懂,從Git的內部工作機制來說,的確是這樣。但是隨著開發的深入,Git的正常使用都由一些友善的命令稿來執行,使Git變得非常好用。
工作步驟
1. 安裝git
熊二飛月使用的是ubuntu系統,使用apt-get install git即可安裝。
2. 設置Git
在能夠使用Git進行工作之前,我們需要進行一次性的配置。為了能讓Git能夠跟蹤誰做了修改,我們需要設置你的用戶名。
git config --global user.name "bear2flymoon"
git config --global user.email [email protected]
這裏我的用戶名就設置為:bear2flymoon
郵箱為:[email protected](谷歌被墻,無法登陸)
3. 創建一個本地代碼庫
假設我們的代碼寫在機器的/home/bear2flymoon文件夾下的’test‘文件夾內。在命令行輸入下列命令:
cd /home/bear2flymoon/test/
下面,我們需要告訴Git這個文件夾是我們需要跟蹤的項目。所以我們在該目錄下輸入以下命令來初始化一個新的本地Git代碼庫
git init
Git會在test文件夾下創建一個名為.git的隱藏文件夾,這就是你的本地代碼庫。
4. 暫存(stage)文件
我們需要暫存(stage)test文件夾下所有項目文件,輸入以下命令:
git add .
最後的“.”符號的意思是“所有文件、文件夾和子文件夾”。假如我們只需要把特定文件添加到源代碼控制中去,我們可以指定它們:
git add my_file,my_other_file
5. 提交文件
現在,我們想要提交已經暫存(staged)的文件。我們提交我們的文件時,總是附帶著有意義的註釋,描述它們現在的狀態。我一直用“initial commit"來描述我的第一個提交的註釋。
git commit -m "initial commit"
同樣,你隨時可以回滾到這個提交狀態。如果你需要檢查現在已暫存和未暫存文件的狀態、提交等,你可以輸入以下命令詢問git的狀態:
git status
6. 創建分支
創建分支是你創建代碼獨立版本的動作,這個新分支獨立於你的主幹。默認的,每次你提交到Git的代碼都會被存儲到”master(主幹)”分支。
現在,比如我們想向項目中添加一個功能,但我們又想要能夠回滾到現在的版本,為了防止出現差錯,或者我們會最終放棄這個功能。這時候,我們就可以創建分支並切換到新建的分支,發送命令:
git checkout -b new_feature
或者先創建一個分支,然後切換
git branch new_feature
git checkout new_feature
要看項目下所有的分支,發送命令:
git branch
現在你可以在你的項目上無所顧忌地做任何你想做的:任何時候,你都可以回到你創建分支前的狀態。註意,你同時可以有多個分支,甚至可以從一個分支上再創建一個分支。
7. 合並分支
當我們對新功能滿意的時候,我們想要把它加到主幹分支上。當我們在的新功能分支上時,我們首先需要加載並且提交文件:
git add .
git commit -m "adds my new feature"
然後移到主幹分支:
git checkout master
像這樣合並:
git merge new_feature
此時,我們的主幹分支和新功能分支會變成一樣。
8. 丟棄並刪除分支
當我們想要丟棄並刪除一個分支時,首先加載我們的文件並且在分支裏提交:
git add .
git commit -m "feature to be discarded"
然後,移到主幹分支
git checkout master
然後發送刪除命令
git branch -d new_featrue
假如修改已經合並了,它只會刪除分支。假如分支沒有合並,我們會得到一個錯誤信息。刪除一個未合並的分支(通常我們不想保留的修改),我們需要發送一樣的命令附帶一個大寫D。意思是“強制刪除分支,無論如何我不想要它了。”:
git branch -D new_feature
9. 回滾到之前提交的狀態
在某些情況下,我們可能想要回到之前的代碼版本。首先,我們需要找到想回到到哪個版本。需要查看所有完成的提交,發送命令:
git log
輸出提交的歷史記錄
commit ca82a6dff817ec66f44342007202690a93763949Author: your_username [email protected]: Mon Nov 4 12:52:11 2013 -0700 changes the frontpage layout commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7Author: your_username [email protected]: Mon Nov 4 11:40:33 2013 -0700 adds my new feature commit a11bef06a3f659402fe7563abf99ad00de2209e6Author: your_username [email protected]: Mon Nov 4 10:37:28 2013 -0700 initial commit
如果我們想回到“adds my new feature"這個提交,簡單的使用提交的ID做簽出(checkout)(通常只用ID的開頭9個字母)
git checkout 085bb3bcb
我們也可以簽出一個新的分支
git checkout -b my_previous_version 085bb3bcb
只是別太瘋狂了!分支越復雜,我們就越難確定我們在做什麽。
10. 別名
Git允許我們為常用的命令創建快捷方式(別名)。例如,如果我們不想每次都輸入git commit -m “some comment”,而是輸入git c “some comment”,我們可以向git全局配置裏添加一個別名來實現,像這樣:
git config --global alias.c ‘commit -m‘
這是我使用的別名列表:
git config --global alias.c ‘commit -m‘
git config --global alias.co ‘checkout‘
git config --global alias.cob ‘checkout -b‘
git config --global alias.br ‘branch‘
git config --global alias.m ‘merge‘
git config --global alias.a ‘add .‘
git config --global alias.s ‘status‘
git config --global alias.dbr ‘branch -d‘
linux系統下git使用