git 分支使用疑問 - Linux

Damian avatar
By Damian
at 2012-02-03T00:54

Table of Contents

※ 引述《shihyuyao (shihyuyao)》之銘言:
: 分支的切換是只能local端嗎?
: git branch -r
: octopress/HEAD -> octopress/master
: octopress/configuration
: octopress/edge
: octopress/gh-pages
: octopress/master
: octopress/move_rakefile_configs
: octopress/rake_minify_js
: octopress/refactor_code_highlight
: octopress/refactor_deployment
: octopress/refactor_js
: octopress/rubygemcli
: octopress/site
: octopress/site-deploy-test
: octopress/subdir
: octopress/thor
: 假設我要切到 octopress/configuration 分支
: git checkout octopress/configuration
: 出現下面錯誤?
: error: You have local changes to 'Rakefile'; cannot switch branches.
: 還有 用 git clone 下載是預設下載遠端的 master的檔案嗎?
: 要如何下載分支的檔案?
: 謝謝

你的問題其實不在於是不是local端 而是因為你Rakefile有改過(local changes)

而你checkout其他branch的話 可能造成你這個修改不見

為了安全起見 git不允許你切換branch

想解決這個問題 你可以先commit local changes 這樣你的working copy就是clean的

不過通常不要為了暫時的切換亂commit比較好 有個好作法是利用 git stash

他會暫時把你現在的working copy存下來 然後讓working copy變成跟HEAD一樣

也就是clean的 你可以stash很多很多working copy 像stack一樣一個個疊上去

等你暫時要做的事情結束後 切回原來branch 再用 git stash pop把剛剛暫存的東西

復原回來就好了~

要注意你如果在HEAD=A的時候stash 然後在HEAD=B的時候pop

有可能造成conflict (就像merge的conflict一樣) 有點討厭


另外 切換到remote branch是可以的 你的用法沒有錯

不過要特別注意不能在remote branch上commit

一定要用local branch去merge他之後 才能commit

最後透過push才能把revision放到remote branch上

--
抱歉中英文夾雜的很嚴重...主要是git裡面的名詞我會用英文這樣....orz

--
Tags: Linux

All Comments

Necoo avatar
By Necoo
at 2012-02-06T03:26
(worship)
Eartha avatar
By Eartha
at 2012-02-09T04:26
注意如果 stash pop 之後有 confilct 的話,該 stash
不會自動被 drop, 解決 conflict 之後要自已手動 drop
Lauren avatar
By Lauren
at 2012-02-12T04:31
git clone 後用 git branch 只顯示master 是這預設?
Lydia avatar
By Lydia
at 2012-02-16T05:09
用git branch -a 會顯示出origin/aa,origin/bb ...etc
Isabella avatar
By Isabella
at 2012-02-17T00:00
這些origin/aa, bb, etc 分支是存在本端倉庫?還是遠端?
因為git clone 不是會把所有東西拉回local?
Dinah avatar
By Dinah
at 2012-02-20T00:58
還是clone 預設只有拉回master分支到本端?
Carol avatar
By Carol
at 2012-02-22T10:01
其餘git branch -r 顯示的origin 都在server需透過網路?
Lily avatar
By Lily
at 2012-02-26T18:29
用git checkout -t 從server拉回到本端?
Harry avatar
By Harry
at 2012-02-27T17:46
還是這些git branch -r 遠端分支隱藏在local 倉庫裡面?
Gary avatar
By Gary
at 2012-02-29T12:56
不知耶,抱歉了,我只會一般的checkin out切branch
Ingrid avatar
By Ingrid
at 2012-02-29T20:18
回錯

使用Xmanager連Centos6.X

Quanna avatar
By Quanna
at 2012-02-02T16:11
來回自己文~有解決囉!最後才發現卡在防火牆 後來重新設定過一次就可以連了 不過有個小問題就是~ 想問一下大家在連gdm 會不會對他進行優化~讓連線更為順暢 然後還有一個問題是~我連到gdm後~ 顯示卡的驅動似乎不給使用 這要怎麼去解決呢?! 謝謝 ----------------------- ...

xrdp 如何共享同一個session?

Quintina avatar
By Quintina
at 2012-02-02T16:07
不同台電腦去連同一台server 都會有不同的桌面 有辦法都看到同一個桌面嘛? - ...

crontab空白?

Michael avatar
By Michael
at 2012-02-02T13:51
這問題事發生在我其中一台主機上(另一台是正常的) root下crontab -l出現的是空白 去查詢 /var/spool/cron/root 裡面也是空白(另一台是有正常排程) /root.sav 這內容正常 ...

請教一個印表機分享的網域問題

Ophelia avatar
By Ophelia
at 2012-02-02T09:54
各位好 昨天的samba問題已經順利的解決了 謝謝各位先進的指導 但是現在又遇上了一個問題 目前這台主機要當成檔案與印表機共享的機器 目前實驗室的ip分別為 140.120.11.73 (本機) 140.120.11.75 (無線AP) 140.120.11.63 (電腦1) 140.120.11.72/ ...

centOS 執行 man date

Hedda avatar
By Hedda
at 2012-02-01T22:41
為什麼我在執行 man date 之後 我一直PAGE DWON直到最後 顯示and#34;ENDand#34; 但是我就卡住了 (我有按q) 我CTRL+ALT+F2 之後再執行一次 man date 這次按 q 就可以跳出去打指令的介面( [XXXatlocalhost ~]$ ) 這樣算是當機 ...