將 Dropbox 當作 Server
# 以 case/test/ 資料夾為範例 # --bare 是指不建立 .git 目錄,而把裡面的檔案直接放在目前目錄下 # 適合在沒有修改檔案或開發的機器上 ~/Dropbox/case/test/git init --bare
本機端設置
/var/www/test $ git init # 初始化 git /var/www/test $ git config --global user.name "Daivd" # 初始使用者名稱 /var/www/test $ git config --global user.email "chan15tw@gmail.com" # 初始使用者 Email /var/www/test $ git conifg --global diff.tool vimdiff # 指定 vimdiff 當作檔案差異比較軟體 /var/www/test $ git remote add test ~/Dropbox/case/test/ # 設定遠端目錄 /var/www/test $ git config branch.master.remote test /var/www/test $ git config branch.master.merge refs/heads/master /var/www/test $ git config push.default current /var/www/test $ touch 1.txt # 建立一個檔案 /var/www/test $ git add . # 新增檔案到 repo /var/www/test $ git commit . -m "add new file" # commit 檔案 /var/www/test $ git commit --amend -m "add new file 1.txt" # 修改剛剛的 commit message /var/www/test $ git push test master # 將剛改變的結果 push 到 test 的 master /var/www/test $ git pull test master # 將 test server 上的最新結果 pull 下來
其他常用指令
/var/www/test $ git log # 查看歷史資料 /var/www/test $ git status # 查看當前 git 狀況 /var/www/test $ git difftool 1.txt # 比較 1.TXT 跟之前版本的差異 /var/www/test $ gitk 1.txt # 圖形化介面
git add -p
使用 git add -p 時 git dd 會進入互動模式,會逐一秀出你編輯過的內容並且讓你決定要不要加到這次的 commit,執行後下方會有幾個選項
y - stage this hunk n - do not stage this hunk q - quit; do not stage this hunk nor any of the remaining ones a - stage this hunk and all later hunks in the file d - do not stage this hunk nor any of the later hunks in the file g - select a hunk to go to / - search for a hunk matching the given regex j - leave this hunk undecided, see next undecided hunk J - leave this hunk undecided, see next hunk k - leave this hunk undecided, see previous undecided hunk K - leave this hunk undecided, see previous hunk s - split the current hunk into smaller hunks e - manually edit the current hunk ? - print help
我認為比較會用到的有
y - 加入這個 hunk n - 跳過這個 hunk q - 離開這次的 stage a - stage 這次的 hunk 並且 stage 此單一檔案接下來所有的 hunk d - 跳過這整個檔案的 hunk g - 會列出這個檔案所有的 hunk 讓你選擇編號前往 / - 搜尋 hunk j - 跳過這個 hunk 不儲存, 前往下一個未儲存的 hunk J - 跳過這個 hunk 不儲存, 前往下一個不管有沒有儲存過的 hunk k - 跳過這個 hunk 不儲存, 前往上一個未儲存的 hunk K - 跳過這個 hunk 不儲存, 前往上一個不管有沒有儲存過的 hunk e - manually edit the current hunk
透過這個方法,可以實現某個檔案我們修改了幾個部分,卻只想先 commit 某些部分的願望。