Git 是個分散式的版本控制系統
以往的版本控制系統都是將程式碼放在伺服器上集中管理
當修改程式碼時皆需要連上網路,將修改一一提交
而 Git 則可以不需要連上網路,來做單機的版本控制
除了單機也能透過伺服器代管程式碼提交回去
首先如果要使用 Git
要在專案資料夾下
-
初始化
git init // 這是讓 git 初始化,生成 .git/ 資料夾
-
加入追蹤
接著專案資料夾底下,應該有了一些檔案,為了讓 git 去追蹤這個檔案必須使用 git add 加入追蹤。git add file_name
或者想將該資料夾底下所有檔案/資料夾都加入追蹤可以用 * 代表全部
git add *
-
顯示狀態
當完成這些動作時,可以使用 git status 來查看追蹤的狀態git status
在還沒加入追蹤前可能會顯示 Untracked
-
提交修改
當我們做完小幅度的修改時,這時理所當然就是要將檔案提交出去,當作一個小小的版本 這時我們可以使用 git commit 將修改送出並且紀錄下來git commit // 如果沒有加參數則會跳到文字編輯器的畫面請你加入文字說明 git commit -m "修改的文字說明" // -m 是要將文字說明也一併紀錄 /* * 到了後來會進行多個檔案的修改,這時候 commit 可能會出現錯誤的訊息 * 原因是因為你要將所有修改過的檔案都提交,所以要嘛就是針對單一檔案提交 * 不然就是加上參數,讓所有被修改過得檔案一口氣提交 */ git commit file_name 對單一個尚未提交的檔案進行提交 git commit -a -m "文字說明"
-
基本流程
基本上做版本控制幾乎只有兩件事情要做- add
- commit
這兩件事就是不斷的讓 Git 幫你對檔案做追蹤
-
回復檔案
說到回復檔案必須先對 Git 中的 HEAD 做個說明, HEAD 在 Git 中代表最近一次的 commit 因此 Git 利用一些表示方法來代表前幾次的 commitHEAD (最近一次的 commit,可以想像就是現在的 commit) HEAD^ (上一次的 commit) HEAD~2 (上上一次 的 commit) HEAD~3 (上上上一次的 commit) 其餘以此類推
而回復的指令為 git reset ,而 reset 有分軟性的回覆跟硬性的
- 軟性: 不會把新增或刪除的文字給刪除,單純殺掉 commit 而已(通常 commit 文字訊息打錯,可以用軟性回復,再重新提交一次)
-
硬性: 除了將 commit 給殺掉之外,也會將文字變回原樣,這要看是回復到哪一次的 commit 而定
使用方法: git reset 提交的版本 軟性: git reset HEAD^ // 將 commit 切到上一次提交的狀態 // 但刪修過得文字不會移除,不加上參數預設為軟性 git --soft reset HEAD~2 // 同樣是軟性,這次是切換到上上次提交的狀態 硬性: git --hard reset HEAD // 可以將文字變回最近這次 commit git --hard reset HEAD^ // 將這次的 commit 殺掉 // 切回上一次的 commit 之外 // 會將文字變成上一次 commit 的樣子
-
使用 GitHub
Git 除了可以單機做版本控制,也能找個代管伺服器來做版本控制,而 GitHub 則是目前最夯的代管商, 目前只要程式碼是 Open 給大家的,都可以免費使用 GitHub首先註冊完 GitHub 的帳號之後,點 New Repository ,這時候會要求你輸入一個名稱,可以使用自己的專案名稱,接著到了下一頁之後,會有告訴你將專案上傳到 GitHub 的方法
Create a new repository on the command line (還沒有專案的話,這會教你如何創新專案) touch README.md // 只是創造說明文件 git init // 這就是初始化啦 git add README.md (將 README.md 加入追蹤) git commit -m "first commit" (第一次 commit) git remote add origin https://github.com/user_name/xxx.git (新增一個要遠端代管的位置,這當然是 GitHub 給的網址囉) git push -u origin master (將專案送上伺服器) 接著會要求你 GitHub 的帳號密碼,輸入完就會送上 GitHub 囉
當然,如果你已經有一個現成的,可以更快的丟到 GitHub 上
Push an existing repository from the command line (已經有現成的專案) git remote add origin https://github.com/FreedomKnight/test.git git push -u origin master 一樣會要求你輸入帳號密碼
如果要跟人家合作開發的話,有幾件事情要做,如果是要讓人來參與的話,可以將對方的 GitHub 帳號加進 Collaborator (Setting -> Collaborators -> 新增朋友帳號)
如果是要參與人家的專案的話,第一件事情就是將對方的專案給複製過來
git clone 網址 // 這會將人家 GitHub 上的專案給複製下來 開發流程: git pull // 這會去檢查你複製過來的專案有沒有其他人提交新的 commit // 如果有的話就會幫你更新複製過來的專案 git commit -a -m "xxxx" // 總之就是提交你的修改,但這時提交會是在本機上 git push // 將現在所有的提交推送回伺服器 接著下一次修改,又從 pull 開始