Category Archives: Git

[Git]reflog

在使用git操作時,可能會需要將一些已經刪掉的commit還原或拿來做其他用途

但因為commit已經刪除,因此無法使用git log去查詢,這時候就可以使用reflog

reflog會紀錄該專案所有branch的操作紀錄

使用方法

Continue Reading

[Git]stash

在專案開發到一半時,如果要臨時修改某個部份並push出去時,會發現原本修改到一半的還沒改完所以不能commit,同時也隨著git有修改且沒有commit的檔案而不能pull跟push

這時候就可以使用 git stash將尚未開發完的程式放到暫存區

處理完成後可以透過pop取出

Continue Reading

[Git]repository merge

有些狀況下,需要將兩個repo的資訊merge在一起(例如本機的兩個專案merge成一個),利用git pull操作,可以避免直接搬移而log會不見

add remote 先將另一個專案加進remote設定

直接merge

Continue Reading

[Git]rebase

使用git pull時,git會將本機的repository和遠端的repository做merge,當merge數量一多git的樹狀圖就會非常混亂。 為了避免這樣的狀況,當我們修改小地方時,就不要再讓repository merge一次,透過rebase讓樹狀不會亂長

指令:

rebase會做四件事

1.暫存一份本機repository從上次pull之後再修改的部份 2.將本機repository rollback到上一次pull的狀況 3.套用遠端的變更 4.套用暫存下來的本地變更

rebase branch

當遇到檔案內容衝突時,修改並git add(不要commit)之後,要再下以下指令繼續rebase:

如果想要預設pull就使用rebase,可以修改.git/config

另外rebase也可以透過Interactive mode自動更改commit的順序及內容

Continue Reading

[Git]tag

有時候專案commit了N次,常常會分不清楚到底哪一個commit才是正式上線的版本,雖然有commit message可以看,但在整個操作上還是較為麻煩的。透過git tag定義標籤,就可以讓操作上更為方便和迅速

Continue Reading

[Git].gitignore

在git中,總是會有config的檔案必須依照環境不同調整,所以就不適合commit及push出去

為了避免混亂,可以使用.gitignore讓檔案避開git。

.gitignore使用方法很簡單,只要建在專案的根目錄,並在裡面填入檔名即可

避掉index.php以及sdk目錄裡的example.php

避掉sdk目錄所有檔案

Continue Reading

[Git]Git Submodule

在開發大型專案的過程中,一定會套用一些第三方的子專案,但又希望子專案更新時,主要專案又同時更新

當然這種狀況用git可以解決,但是主要專案及子專案都有.git,會有大大的問題

好險git有提供Git Submodule來解決這樣的問題

簡單說就是將某個有做git的專案放進另一個有做git的專案裡

引入Submodule 比如說,我有個專案

而我需要引用到一個jQuery plugin,就可以利用git submodule來引入

這時候就可以發現project目錄下多出一個.gitmodules檔案,parent git與submodule git的關連性記錄在.gitmodules中,而版本控制則是靠parent git記住submodule git的commit id

所以這時候做git status會看到

接著要讓parent git知道你有掛入modules(讓.git/config有submodule的資訊,其實跟git add file的意思相同)

接下來只要像一般專案一樣,先add完後commit再push上去即可

更新Submodule 如果Submodule有更新,只要移動到Submodule目錄,做pull就可以了

clone parent git 當我們clone有submodule主專案下來時,會發現只有parent git的程式,而submodule竟然是空的,只剩.gitmodules還在。 這時要先更新.git/config後再去拉submodule(簡單說單純clone下來的話,parent git是不認submodule的)

Continue Reading

[Git]git操作

使用前需要先安裝git

基本操作

另外有個可以取代直接git log的好東西,叫做tig,算是git log的瀏覽介面 可以直接下tig指令查看log

FreeBSD安裝

Continue Reading