==== 介紹 ======================================================================
==== 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 ====
- 到 GitHub 上建立一個專案。
- $ cd [專案所在位置]
$ git init
在專案資料夾中執行控管初始化。- $ git add [檔案]
$ git commit
將檔案加入控管後,進行一次 commit。- git remote add origin [從 GitHub 專案首頁取得的 GitHub 網址。]
將 Remote Server ( GitHub ) 位置加入專案控管資訊。- git push -u origin master
將本機端檔案推上 GitHub。
第一次執行要指定誰是 Master,之後再推就不必指定了。
