Wednesday, 25 April 2018

Git 移動目前修改的東西到另一個分支上

Preface

有時開發的時候,會發生在錯的分支上進行修改,這時可以利用 stash 來進行搬動剛剛所做的修改。下面就做一個假設我在 master branch 上進行了開發,想要把剛剛所做的改動移動到 develop branch 上。

Tutorial

//先確認目前所做的改動
$ git status
//使用 stash 儲存起來,save 後面所帶的參數為自定義的 stash 註記
$ git stash save these changes are going to apply on develop branch
//目前的改動 stash 起來後就可以切換到 develop branch 上了
$ git checkout develop
//若沒有暫存其他的東西的話可以直接用 stash pop 來還原剛剛暫存東西
$ git stash pop

Saturday, 28 October 2017

Git 版本命名

Preface

先前已經有一些筆記介紹 Git 的開發流程以及如何操作,這篇則是要介紹,如果一些已經確認要進到 Mater branch 的 commit 如何為其標上版號以利進行發布。

Tutorial

首先可以先參考語意化的版本命名(Semantice versioning)的命名規則。接著再進行以下的操作進行標上版號。
//對當前的 commit 標上版號
$ git tag -a v0.0.x
//顯示所有的版號
$ git tag
//顯示對應版號其 commit 的詳細資訊
$ git show v0.0.x

Wednesday, 23 August 2017

Git 設定個人資訊

Preface

當使用 Git 進行版本控制時,完成 local commit 後,需要將 commit push 到 remote repository 的時候需要將個人的 profile 一同 push 到 remote repository 前,需要先設定個人的 profile。

Tutorial

可以透過下面兩行 command line 去進行設定 name 以及 email。
$git config user.name = "YOUR NAME"
$git config user.email = youreamil@yourdomain.com
當然也可透過 --global 選項進行全域變數的設定。
$git config --global user.name = "YOUR NAME"
最後可以使用 --list 進行所有的 config 設定
$git config --list
完成設定 profile 後以後 push commit 到 remote repository 的時候就會順便帶上個人的資訊了。如果是以 Github 為例, Github 會拿你所設定的 user.email 去跟帳號做連動。也就是 profile 上的 email 必須與你 Github 的帳號一致。此時 Github 才會把你每次 commit 的 code 列入 account activity 的計算。

Saturday, 15 April 2017

SSH 設定 config 使用不同的 Key 對應不同的 Server

Preface

在工作的時候常常會遇到公司的 codebase 要設定 SSH 之後才能把自己的程式碼 commit 上去,可是這時候又會遇到自己的常常在使用的 codebase 可能是 Github, Gitlab......等等其他的服務。如果需要常常將 SSH key 作切換的話蠻麻煩的。所以這時候可以透過設定 config 讓 SSH 自動幫你切換 SSH key。

假設一下情境,目前有兩個 Git Repository: repoA (公司專案連接到公司的 codebase), repoB (個人的專案連接到個人的 Github)。透過設定檔告訴 SSH 當 repoA 要進行 commit 的時候需要連接到公司的 codebase 這時候透過 SSH config,SSH 就可以自動的幫你切換對應的 SSH key。要進行 commit repoB 的時候反之亦然。

Tutorial

首先切換到 SSH 的路徑底下
$ cd ~/.ssh/

接著使用 ssh-keygen 產生兩組 key,記得在產生 key 的過程中需要設定 key 的名稱,記得要設定成你自己容易區分的名字。例如: work_id, personal_id
$ ssh-keygen -t rsa -C "your comment"

接著使用文字編輯器在 SSH 的路徑底下建立一個叫做 config 的檔案
$ vim config

//Config 內容如下

# GitHub.com server
Host Github
    HostName github.com
    User github_user
    IdentityFile ~/.ssh/personal_id

# Work codebase server
Host Your company name
   HostName 127.0.0.1 #Your id address of your company codebase
   User your name
   port 7999 #According the setting of your company codebase
   IdentityFile ~/.ssh/work_id

設定檔也準備完成了之後,使用 ssh-add 把 work_id 和 personal_id 加入
$ ssh-add ~/.ssh/work_id
$ ssh-add ~/.ssh/personal_id
使用 ssh-add -l 功能來檢查哪些目前有哪些 key 已經被加入了
$ ssh-add -l
別忘了把自己新產生 SSH key 註冊到 Github 以及公司的 codebase上。
$ pbcopy < ~/.ssh/work_id.pub
接著你就可以試著從自己的 Github 上以及公司的 codebase 上抓一個 repo 測試一下連線是否有成功。

References

Wednesday, 12 April 2017

Git 使用 stash 功能來暫存目前修改的狀態

Preface

目前個人使用 Git 遇到會需要使用 stash 功能情境為,目前的 feature branch 開發到一半,但是有一個臨時的 hotfix 需要先進行修改。手邊目前的 feature branch 功能也還沒有完成到適合 commit 的狀態。想要在不進行 commit 的狀態下建立一個新的 hotfix branch 切換過去這時就需要先使用 stash 暫存起來。這樣就可以進行  branch 的切換了。

Tutorial

首先在目前的分支下使用 status 來確定,已經有檔案修改。
$ git status

確定目前有修改的檔案後,使用 stash 功能把目前的狀態暫存起來
$ git stash

接著再用 staus 確認 branch 狀態,你應該會發現剛剛所有做的修改都不見了
$ git status

接下來你就可以任意地切換分支了。或者是你可以用 stash list 來確認目前有暫存起來的狀態
$ git stash list

等待 hotfix 完成或者是其他的功能完成之後,要把暫存的狀態還原回來,可以透過 stash list 找到 stash 狀態的 index 以及可以確認相對應的 branch,切換到對應的 branch 上使用 stash apply 再加上想要回覆的暫存狀態就可以了
$ git stash apply stash@{0}
//stash@{number} 是 stash index 可以在 stash list 裡面找到