Sharing

2012年3月13日 星期二

Git 容易忘記的指令


============ 當 Conflict when git pull =====================

http://jackdempsey.me/2010/07/01/git-when-branches-diverge.html

如果 git pull 時發現有 Conflict, 但你又明明沒有加入任何 commit,
有可能是因為原來的 branch 已經走到分支出去了,
你可以打入 git status

wistor@wistor-003:~/KernelBuild/kernel-3.2$ git status
# On branch master
# Your branch and 'origin/master' have diverged,
# and have 32 and 83 different commit(s) each, respectively.
#
nothing to commit (working directory clean)



第一個數字 32 代表著你比 origin/master 多了 32 個 patch,
第二個數字 83 代表著你比 origin/master 少了 83 個 patch
如果你很有興趣知道是那一些可以利用 git cherry origin/master 來看

接下來你有幾個方式

1. 像網頁上的方式, 執行 git reset --hard HEAD^ 一直到你可以做 fast-forwarded
這個時候再來執行 git pull

wistor@wistor-003:~/KernelBuild/kernel-3.2$ git status
# On branch master
# Your branch is behind 'origin/master' by 83 commits, and can be fast-forwarded.
#

2. 直接執行 git pull --rebase origin/master

3. 如果你有用 smartgit, 可以打開 log tree, 直接選擇你要的點, 然後按下 reset


常用指令說明
http://blog.longwin.com.tw/2009/05/git-learn-initial-command-2009/



沒有留言: