For 高老師Git課程簡易項目紀錄,此篇比較適合對Git有概念且會操作的人。另外高見龍講課真的專業級,可以講得很輕鬆詼諧,然後切入中心觀念。針對講課項目內容去展開細項。
init / config 跳過
git add . (all file attatch) 很危險又不負責任的指令,有可能把沒做完的檔案Attach
git commit (https://www.conventionalcommits.org/en/v1.0.0-beta.3/)
你覺得什麼是git commit ? 為何要設計做兩段式操作(add、commit)?
git checkout (殊途同歸)
分散式?
Git Graph
貼紙:分支是Git很大的賣點,Git的分支很便宜!!
git switch 與 git restore 為 git checkout 的分別功能?
孤兒分支,
git checkout - (兩分支切換,-表上一個分支)
忘記切換分支,就做commit…直接改分支name…(就像改檔案名稱一樣),例如要commit dev,但commit 到 main分支。直接用git command或是用Tool去rename。把dev改成main,main改成dev即可。 不過! 絕對不要到.git file去改檔名!!!
git merge ,撕貼紙去貼領一個commit…刪bracnh就像把貼紙撕掉一樣…如果要把
add cat 2 (main) (cat)
add cat 1
add ee
add dd
如果要把main貼紙貼到ee…很簡單
Rebase 合併
Re(變換) + base(根基)。下例,dog,cat base為同一個點。rebase有點像是
如果你亂砍分支..會發生節點,沒有被指向,所以他會被隱藏,例如下面,你把dog砍掉, add dog2 add dog 1就會消失
如果要復原,可以重新Create bracnh 指向原節點
git 沒有刪除commit這件事情,commit不見其實是被隱藏起來!
rebase細部流程如下
Merge跟Rebase合併有什麼優點
Merge衝突發生處理
對Reset誤解
C1->C2->C3->C4->C5(M*)
聽說 –hard不要用
reset –mix / soft
符號說明
經過rebase的合併要怎麼進行reset
git commit –amend => 修正最後的commit
– git reflog –> head 移動軌跡
小練習(bracnh2)
開bracnh2
開merge合併
刪除此次合併,回到合併前狀態
要怎麼取消剛剛這次合併.
問題集
以下哪一個指令會造成HEAD移動
git checkout
git merge
git rebase..
若刪除已經合併的分支會發生什麼問題?
若刪除尚未合併的分支會造成什麼問題?
節點合併 & 節點修改 透過rebase (互動式rebase)
Windows : $env:EDITOR="code –wait" git rebase –interactive bb0c9c2ab94514d95bb898c51b3cedb1c0675320
合併結點 (壓縮cat1&cat2,壓縮dog1&dog2)
原先
更改後
更改完後
更改完後,線上跟Local會對不起來,如果這支分支feat只有你再維護…可以直接-f push。但千萬不要強推共用分支..
接著我們要將這個node,拆成cat1,cat2一個,cat3,cat4一個 (看影片..帶整理)
遠端(Remote部分)
新增遠端節點名稱
git remote add origin git@…
推到遠端main
git push origin main
如果你近期常push哪一個分支ex feat/123
git push -u origin feat/123
git push origin main其實是 git push origin main:dev (遠端:dev),本地的main推上去形成一個dev分支
所以 git push origin main 其實是 git push -u origin main:main 本地的main推上去變main分支 (所以你想遠端分支名稱與本地一樣,在同個Name一樣才可以簡寫)
git push origin :dev,把空的推上去形成dev..表把遠端dev刪除…
git pull origin main ,pull其實不是拉回來的意思…pull =git fetch + git merge
git fetch origin main,把遠端main拉下來,但Local節點是舊的,此時就要做merger..單純的fetch不會有衝突,merge才會以機會發生衝突
git pull –rebase = git fetch + git rebase
PR跟MR有什麼不同? Pull = (Fetch+Merge), MR(Merge),其實只是角度不同…但最終都是要做Merge Request. Pul意思是請你拉下來看一下,沒問題能否Merge Approve..
git gc…objects一開始記錄的是完整備份,而gc下完後,會做差異備份…(移動到package裡面)
情境題
某個分支部分Commit做的不錯想收進來,但又不想合併整個分支
git cherrypick (挑選對自己有利的)
or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Do you want to remove this version name and description?
Syncing