git 自學筆記

2017-10-10 23:24:00
==== 介紹 ======================================================================

==== 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,之後再推就不必指定了。

©2011-2022 RZ Fang 創用 CC 授權條款