顯示具有 Git 標籤的文章。 顯示所有文章
顯示具有 Git 標籤的文章。 顯示所有文章

2014/07/31

使用 git stash 保存工作狀態 ( Save working status by `git stash` )


[ Quick Solution Mode ]
$ git stash                # save working status
$ git stash save "$name"   # save working status with a specific name ($name)
$ git stash list           # List the stashes that you have
$ git stash pop            # popup and remove the latest stash
$ git stash apply          # get the latest stash but keep the stash
$ git stash drop stash@{x} # drop a record named stash@{x}
$ git stash show stash@{x} # show changed files named stash@{x}
$ git stash show -p stash@{x}    # show stash@{x} detail diff 
$ git stash --include-untracked  # to stash untracked file

[ Verbose Mode ]
使用 git 做版本控管時,
有一個很好用的功能,
就是用 git stash 來暫存你的變更,
這麼做有什麼好處跟目的?

思考一下開發時可能遇到的情形...
開發到一半,臨時需要切換到另一個 branch 開發,
有可能是突然想到另一個 branch bug的解法,
或被 assign 先處理另一件事,
或是想暫時恢復未 commmit 前的狀態, 看看修改前的狀況,
不管如何,就是有需要切換 branch 或恢復成未修改的狀態,
但目前的功能做一半,又不好 commit 一個半成品,

這個情況就可以用 stash 來將目前所有的修改儲存起來,(有點像暫存區)
等到需要時再取出來, 繼續開發,
`git satsh` 的 help 的說明如下...
`git stash` help:
usage: git stash list []
   or: git stash show []
   or: git stash drop [-q|--quiet] []
   or: git stash ( pop | apply ) [--index] [-q|--quiet] []
   or: git stash branch []
   or: git stash [save [--patch] [-k|--[no-]keep-index] [-q|--quiet]
         [-u|--include-untracked] [-a|--all] []]
   or: git stash clear
可以查 Git Manual, 取得更詳細的說明
$ git stash --help or man git stash
GIT-STASH(1)                      Git Manual                      GIT-STASH(1)

NAME
       git-stash - Stash the changes in a dirty working directory away

SYNOPSIS
       git stash list []
       git stash show []
       git stash drop [-q|--quiet] []
       git stash ( pop | apply ) [--index] [-q|--quiet] []
       git stash branch  []
       git stash [save [--patch] [-k|--[no-]keep-index] [-q|--quiet]
                    [-u|--include-untracked] [-a|--all] []]
       git stash clear
       git stash create

簡單來說, 要保存到暫存區,
可以執行
$ git stash                 # 自動保存
# OR
$ git stash save "$name"    # 存成自訂的名字, 好處是可讀性高, 如果保存了好幾筆記錄,
                              才不會看不出哪個是哪個

$ git stash list            # 保存後, 可用此來查看暫存區內保存了哪些暫存記錄
$ git stash show            # 用來查看某筆暫存記錄變更的檔案和內容

$ git pop                   # 直接取出最後一筆暫存記錄
$ git pop "$name"           # 取出某一筆暫存記錄

$ git drop "$name"          # 取出記錄繼續開發後,就不再需要這筆暫存記錄了,用 drop 來刪除吧
                              eg. git stash drop stash@{1}

2012/03/02

解決Windows上使用TortoiseGit亂碼問題(使用UTF-8作為預設編碼)

想在Windows上使用Git時, 一般會推薦 msysgit + tortoiseGit
就可透過tortoise的GUI介面操作Git
關於這類的文章教學有很多
但由於敝人英文程度沒那麼好
偶爾也有需要使用中文
以及在Windows和Linux間commit/push的時候
這時候中文亂碼問題就很傷腦筋
我的Git Repository 使用UTF-8編碼
在Linux的環境操作時中文一切正常
但Windows預設使用Big5
所以有中文亂碼,無法check out的問題....Orz
習慣使用command模式的人可以參考這裡解決中文亂碼問題
唯一要補充的就是修改這些git設定檔時
若出現如下訊息

用unlocker之類的軟體並沒有發現任何lock住它的程式
因此只要按右鍵修改檔案權限
編輯加上自己的帳號並允許完全控制,就能夠存檔了

















像我習慣使用TortoiseGit的GUI介面來操作
可以安裝utf8-git-on-windows
預設使用UTF-8為編碼格式







選擇自己OS的位元版本  安裝後就可以正常使用了












而是否一定得先安裝 "Git-1.7.3.2-utf8-20110213.exe" tortoiseGit才能正常顯示中文
我並不是很確定...XD, 但我自己是有先裝就是了~

-----------------------------------------------------------------
關於Git是什麼 Git wiki
Git的好處及優點可參考 Why Git is Better Than X(繁中)
Git的教學和使用手冊可以參考 JosephJ的 Git Study
Stanford 學生Ben Lynn 中文手冊 Git Magic
ihower寫的一系列Git文章也不錯
另外這裡有Git Cheat Sheet  :)