Git 手扎
主要紀錄常用指令
Git 指令
git init
初始化一個init的資訊在指定的folder下
- git init
確認遠端設定
- git remote -v
查看遠端分支
- git remote –all
新增檔案在本機暫存區(從工作區存到暫存區)
- git add .
- git commit -m “message”
確認工作區的狀態
git status
git commit -m “message”
git remote add origin path
path=”https://github.com/LanceRabbit/my-page"
將已確認的檔案上傳到遠端版控
- git push -u origin master
-u 是 –set-upstream 的縮寫,意即是「設定上游」。也就是說,這個參數會讓本地的 master 和 origin 從此有一個上下游的關係,以後只要輸入 git push,就會自動把本地的 master 推送到遠端的 origin。
git log
1 | git log |
–oneline 是把 commit 資訊整理成一行的副指令。至於 HEAD 是目前分支最新的 commit,由於目前位在 master,所以 HEAD 指向 master。
若檔案有關聯其他project,其關聯project有更新時,要進行同步更新
git submodule update
git branch
1 | 列出所有版本 |
- -m 是 –move 的縮寫,後面依序加上原本的分支名稱,和新的名稱。
- 若有需要刪除 feature/b 分支的情況,可以使用 -d 這個副指令,這是 –delete 的縮寫
- 若遠端上有新內容,就不能使用 -d 來刪除,需要使用 -D
git pull/fetch
- 能使用 git pull 來將遠端分支下載至本地
- 認識 git pull 和 git fetch 與 git merge 的關係
- 能夠使用 git fetch 來抓取遠端分支的資訊
上傳檔案到遠端
git push origin feature/a
git push origin master
暫存檔案
功能開發到一半,被緊急”插件”時,需要將開發中的檔案先暫存起來,等後續處理完插件再繼續開發
1 | 暫存已開發的檔案 |
git rebase
另外一種方式,使用rebase去介接branch的commit到主幹(development)上
這邊就不同於merge會再長出一個節點,所以使用上要特別注意…別蓋到別人的commit
1 | 先從分支切回主幹上 |
git diff
指令 | Result |
---|---|
git diff: | 沒有顯示任何結果,因為 Staging Area 與 Working Area 的內容更動一樣 |
git diff –cached: | 顯示目前在 Staging Area 與 Git Repository 的內容更動差異 |
git diff HEAD: | 結果同上,顯示目前在 Working Area 與 Git Repository 的內容更動差異 |
git reset
模式 | 指令 | 內容更動會保留在不同階段的差異 |
---|---|---|
mixed | git reset commitcode | 當前內容在還原後會保留在 Working Area |
soft | git reset –soft commitcode | 當前內容在還原後會保留在 Staging Area 和 Working Area |
hard | git reset –hard commitcode | 當前內容不會保留而是被捨棄,還原回指定節點的內容 |
檔案還原: git reset –hard HEAD
修正commit案例
發現有一個commit 改錯了且已push到遠端(github)
為了修正這一段commit 退版到沒問題的版號
退版: git reset –hard HEAD^
接著同步遠端也相同版號:git push <分支名稱> –force
確認遠端同步狀況.
指定版號後,後續的commit皆會被刪除 :fire:
–force 因節點有修改,要重新調整節點位置
還原單檔
git checkout HEAD -- src/123.txt
-- 代表後面參數皆為檔案名
git patch
1 | 搭配 git diff 產生patch檔案 |
git PR
1 | 先fork專案到自己的github上,再進行clone |
Git Flow
Git flow為開發流程的一種控管模式,避免各自commit造成版控的災難發生
git release
1 | local更新到最新 |
git hotfix
1 | master/development 皆更新到最新 |