歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

快速學會使用Git和遠程代碼庫

工作步驟

  我會展示以下的步驟,通常能幫我獨自在一台或多台機器上做項目。

  創建一個遠程的空代碼庫(在BitBucket上)

  在本地代碼庫添加一個項目

  在分支上開發新功能

  a) 保留新功能 或者 b) 丟棄它們

  也許,回到某個早先的時間點

  將本地代碼庫推送到遠程代碼庫

  在另一台機器上取得遠程代碼庫

  安裝Git

  在大多數*nix系統(Linux、OS X)上,Git已經被安裝了。你通過發送下面的命令,可以通過Git自身,把它更新到最新的的開發版本(不推薦).

  1git clone https://github.com/git/git

  在Windows上,你可以在這裡下載Git的安裝程序。如果你真的需要其他系統的安裝程序,Mac OS X安裝文件在這裡,Linux的操作指導在這裡。

  創建一個遠程代碼庫

  很多人喜歡用Github。我個人更喜歡BitBucket,因為它提供了不限制的私有代碼庫,那是我最需要的。你可以將下列指令轉換到Github上,這些過程是相同的。

  那麼,去到www.bitbucket.org並注冊一個賬號。一旦完成,登錄後點擊最上方的“create(創建)”按鈕。照著填寫表格,勾選私有代碼庫。你可不想讓其他人來偷窺你的Facebook的殺手級應用的源代碼,對吧。

  你現在可以離開BitBucket了,我們在已經有了所有那裡需要的東西了。

  設置Git

  在我們能用Git工作之前,我們需要做個一次性的配置。為了Git能跟蹤到誰做了修改,我們需要設置你的用戶名。我強烈建議你使用與注冊BitBucket賬號相同的用戶名和電子郵箱地址。發送這些命令,相應地替換掉其中的“your_username”和“[email protected]”(注意引號)

  1git config --global user.name "your_username"

  2git config --global user.email [email protected]

  我們也會設定推送(push)的默認值為‘simple’。要了解這是什麼意思,快速閱讀我之前發布的關於推送的默認值(非必須)。發送這條命令:

  1git config --global push.default simple

  我們都設好了。你無需在你的機器上再重復這些配置,但如果你在另一台機器上工作的話,不要忘記這些配置。如果你忘記做初始的配置,Git不會允許你提交任何東西,這會讓你困擾。

  創建一個本地代碼庫

  作為例子,我們會假裝我們有一個網站(無所謂技術)存在於我們機器上的‘workspace’文件夾下的’my_site’文件夾內。在命令行中,去到你的站點的根文件夾。在OS X和Linux上:

  1cd ~/workspace/my_site/

  在Windows上:

  1cd c:\workspace\my_site

  我們首先需要告訴Git這個文件夾是我們需要跟蹤的項目。所以我們發送這個命令來初始化一個新的本地Git代碼庫

  1git init

  Git會在my_site文件夾內創建一個名為.git的隱藏文件夾,那就是你的本地代碼庫。

  加載(Stage)文件

  我們現在需要命令Git我們需要加載(stage)所有項目文件。發送:

  1git add .


 最後的“.”符號的意思是“所有文件、文件夾和子文件夾”。假如我們只想要把特定文件添加到源代碼控制中去,我們可以指定它們:

  1git add my_file, my_other_file

  提交文件

  現在,我們想要提交已加載(staged)的文件。閱讀“添加一個時間點,在這裡你的文件處在一個可還原的狀態”。我們提交我們的文件時,總是附帶著有意義的注釋,描述了它們現在的狀態。我一直用“initial commit”來作為第一個提交的注釋。

  1git commit -m "initial commit"

  就這樣。現在你隨時都可以回滾到這個提交狀態。如果你有需要檢查你現在的已加載(staged)和未加載(unstaged)文件的狀態、提交等,你可以詢問git的狀態:

  1git status

  創建分支

  建立分支是你創建代碼的獨立版本的動作,獨立於你的主干分支。默認地,每次你提交到Git的文件都會被儲存到“master(主干)”分支。

  現在我們來說說,你想要向項目裡添加一個功能,但你想要能夠回滾到現在版本,以防出現差錯,或者你決定要放棄這個功能。這就是你創建分支的時候了。創建並同時切換到你新建的分支,發送:

  1git checkout -b new_feature

  或者,你可以先創建一個分支然後手動切換,就像這樣:

  1git branch new_featuregit checkout new_feature

  要看你現在項目下所有的分支,發送這個:

  1git branch

  現在你可以在你的項目上無所顧忌地做任何你想做的:任何時候,你都可以回到你創建分支前的狀態。注意,你同時可以有多個分支,甚至可以從一個分支上再創建一個分支。

  合並分支

  當你對你的新功能滿意了的時候,你想要把它加到主干分支上。當你在你的新功能分支上時,你首先需要加載(stage)並且提交你的文件:

  1git add .git commit -m "adds my new feature"

  然後你移到你的主干分支:

  1git checkout master

  像這樣合並:

  1git merge new_feature

  此時,你的主干分支和你的新功能分支會變成一樣的了。

  丟棄分支

  相反,如果你打算丟棄你在分支裡做的修改,你首先需要加載(stage)你的文件並且在分支裡提交:

  1git add .git commit -m "feature to be discarded"

  然後,你移到主干分支:

  1git checkout master

  現在,你的代碼處於你創建分支之前的狀態了。

  刪除一個分支

  如果你要把你的分支合並到主干分支,從主干(master)分支上發送:

  1git branch -d new_feature

  假如修改已經合並了,它只會刪除分支。假如分支沒有合並,你會得到一個錯誤信息。刪除一個未合並的分支(通常你不想保留的修改),你需要發送一樣的命令附帶一個大寫D。意思是“強制刪除分支,無論如何我不想要它了。”:

  1git branch -D new_feature

  回滾到之前的提交狀態

  在某些時候,你可能想要回到之前的代碼版本。首先,你需要找到你想回到哪個版本。要看所有的完成了的提交,發送:

  1git log

  這會輸出你的提交的歷史記錄,像這樣:

  1commit ca82a6dff817ec66f44342007202690a93763949Author: your_username [email protected]: Mon Nov 4 12:52:11 2013 -0700 changes the frontpage layout

  2commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7Author: your_username [email protected]: Mon Nov 4 11:40:33 2013 -0700 adds my new feature

  3commit a11bef06a3f659402fe7563abf99ad00de2209e6Author: your_username [email protected]: Mon Nov 4 10:37:28 2013 -0700 initial commit

  如果你想回到“adds my new feature”這個提交,簡單地用提交的ID做簽出(checkout)(我通常只用到ID開頭的9個字符)

  1git checkout 085bb3bcb

  你也可以簽出到一個新的分支,像這樣:

  1git checkout -b my_previous_version 085bb3bcb

  只是別太瘋狂了!你的分支越復雜,就越難確定你真正在做什麼。

  推送到遠程代碼庫

  在第一次你想推送一個本地代碼庫到遠程代碼庫時,你需要把它添加到你的項目配置裡。像這樣做:

  1git remote add origin https://[email protected]/your_username/name_of_remote_repository.git

  注意這裡的“origin”只是一個習慣。它是你的遠程代碼庫的別名,但是你可以用其他任何你喜歡的詞。你甚至可以有多個遠程代碼庫,你只需要給它們起不同的別名。

  之後,你想要推送你的本地代碼庫的主干分支到你的遠程代碼庫:

  1git push origin master

  如果你使用Bitbucket,在這時,你會被請求輸入你的密碼。照做,你的本地代碼庫會被推送到你的遠程代碼庫上。

  取得遠程代碼庫的一份本地拷貝

  如果你還沒有一份遠程代碼庫的本地版本(例如,如果你在另一台機器上開始工作,這台機器上還沒有用過這個項目),你首先需要拷貝(clone)它。去到你的代碼庫想要拷貝到的文件夾下,並發送:

  1git clone https://your_username@bitbucket/your_username/name_of_remote_repository.git

  另一方面,如果你已經在本地的項目上工作了,只是想從遠程代碼庫上取得它最新的版本,移動到項目的根目錄下,並發送:

  1git pull origin master

  別名

  Git允許你為你常用的命令創建快捷方式(別名)。例如,如果你不想每次都輸入git commit -m “some comment”,而是輸入git c “some comment”,你可以向你的git全局配置裡添加一個別名來實現,像這樣:

  1git config --global alias.c 'commit -m'

  這是我使用的別名列表:

  1git config --global alias.c 'commit -m'

  2git config --global alias.co 'checkout'

Copyright © Linux教程網 All Rights Reserved