---
# System prepended metadata

title: git筆記

---

# git筆記
git有一個名為分支的功能，可以藉由輸入$ git switch 分支的名字，來創造一個分支。
所謂的分支其實就是一種標籤，我自己的看法是，他像是一支發光的火把。
分支的功能就是插在commit上面，替這個commit做記號
在你所在的分支會有＊或是一個圓型的記號，這個就是ＨＥＡＤ，ＨＥＡＤ代表著你現在所在的commit，也就是你所在的版本的位置。
想要把兩個有分支的commit合在一起，創出新的commit有兩種方法，分別式merge和rebase。


```＄ git merge``` 想融合的分支
隱藏主詞current branch，會融在現在head所在的分支
如果有衝突，修正好後commit就好

```＄ git rebase``` 想融合的分支
rebase 更像是在嫁接，把你所在的分支切下來，接在你想融合的分支後面
 
 git有一個很棒的規則，那就是commit不會被刪掉，除非你用上非常特殊的手段，在此就不談了。
 
 基本上我們平常用的刪除手段並不是刪除，而是把那段commit上的分支退回前面的commit。
 
 失去了分支的那段commit，就像黑暗的小路一樣，失去了分支這個“火把”帶來的光亮，隱藏了起來讓你看不到。他只是看不到，但commit本身還存在。
 
 在git的刪除並不是真正意義的刪除，而是移動，移動分支後，沒有分支的commit就會被隱藏。
移動的指令為$ git reset 想移動的位置

```git reset HEAD~2 ``` #我想要回到ＨＥＡＤ的前2個狀態
```git reset HEAD/^ --hard ```#我想要回到ＨＥＡＤ的前1個狀態

如果想找被“刪掉”的commit，可以輸入 ＄ git reflog 尋找ＨＥＡＤ待過的commit紀錄找到commit的編號
```$ git reset commit的編號 ```
這樣就能回到“刪掉”的commit