==== 介紹 ====================================================================== ==== GitHub ==== Git 的 Server 稱為 GitHub。 ==== Local Repository ==== 有別於 SVN,Git 在同步時通常是與 Local 端的控管庫進行同步, 包括差異比較、差異同步等。 GitHub 僅視為一個 Remote 的控管庫節點,因此光是完成同步時, 還必須將差異推往 GitHub,才算正式完成多人開發時的版本控管、備份效果。 ==== 常用指令 ================================================================== $ git init 就地將所在位置建立一個控管。 $ git clone git@[GitHub Host]:[Account]/[Project Name].git clone 之後的專案位置,也可直接從 GitHub 中,專案首頁取得。 $ git add [file path] 將檔案加入 Git 控管。 $ git rm [File Path] 將檔案脫離 git 控管。注意:會直接刪除工作目錄中的檔案。 --cached 加上此項目,則不會刪除工作目錄中的檔案。 $ git mv [Old File Path] [New File Path] 更換檔名,在當前位置 與 Local Repository 同步作用。 $ git status 觀察當前工作目錄與 Git 之間的檔案異動差異。(commit 時也會看到的資訊。) $ git diff ([File Path]) 比較 Project 在當前位置 與 Local Repository 的差異。 $ git diff origin 比較 Local File 與 Remote Repository 的差異。 $ git commit ([File Path]) 將異動的內容同步到 Local Repository。 File Path: 不填就從當前位置進行同步。 $ git revert [commit version] 將指定版本再 commit 一次變成最新版,連還原的動作本身都有紀錄可循。 A -> B -> C -> D -> E 變成 A -> B -> C -> D -> E -> F -> G $ git revert E $ git revert D $ git reset [commit version] 紀錄推回指定版本,從那之後的所有版本都變成未 commit 的狀態。 已經改過的 Codes 是不會被還原的。 A -> B -> C -> D -> E 變成 A -> B -> C -> D -> E -> F -> G $ git reset B A -> B $ git pull 將 Remote Repository 的現況拉到 Local 進行同步。 $ git fetch 將 Remote Repository 的現況拉到 Local 進行同步,但不會自動 Merge。 $ git push 將 Local Repository 的現況推向 GitHub 進行同步。 $ git push -u origin [new branch] 將 Local Repository 的新 Branch 推上 GitHub 進行同步。 $ git branch 列出 Local 端所有的 Branch。 $ git branch [new branch name] 從當前的 Branch 建立一個新的 Local Branch。 $ git branch -m [old_name] [new_name] 改名字 (如果有同名會失敗,改用 -M 可以強制覆蓋) $ git branch -d [branch_name] 刪除 Local Branch。 $ git checkout [branch_name] 切換 Branch (注意到如果有檔案修改了卻還沒 commit,會不能切換 Branch。) $ git checkout -b [new_branch] origin/[new_branch] 從 GitHub 將新 Branch 加入 Local Repository。 $ git rebase [target branch] 把當前的 Branch 跟指定的 Branch 合併起來。 此後觀察不出是否曾經分支又合併。 $ git rebase --continue 在 rebase 的過程中遇到衝突,解決後,用此 Command 繼續合併工作。 $ git merge [target branch] 把當前的 Branch 跟指定的 Branch 合併起來。 指定 Branch 不受影響,當前的 Branch 會異動成合併後的結果。 ==== 常見問題 ================================================================== ==== 如何從本機端建立專案控管並上傳至 GitHub ==== 1. 到 GitHub 上建立一個專案。 2. $ cd [專案所在位置] $ git init 在專案資料夾中執行控管初始化。 3. $ git add [檔案] $ git commit 將檔案加入控管後,進行一次 commit。 4. git remote add origin [從 GitHub 專案首頁取得的 GitHub 網址。] 將 Remote Server ( GitHub ) 位置加入專案控管資訊。 5. git push -u origin master 將本機端檔案推上 GitHub。 第一次執行要指定誰是 Master,之後再推就不必指定了。