2010-04-26 73 views

回答

8

剛:

git clone $url 

認真!這是最好的方法。

你可以做各種各樣的git resetgit branch命令來移動裁判,但唯一的目的是保持你的提交在你的本地存儲庫的某個地方以備將來參考。如果這是目標,那麼保持整個存儲庫原樣,然後重新克隆原點。

要接受所有更改的只是一個分支,foo

git checkout foo 
    git fetch origin +refs/heads/foo:refs/remotes/origin/foo 
    git reset refs/remotes/origin/foo 

foo現在指向同一提交的fooorigin。如果您想刪除工作目錄中的文件,請將--hard添加到git reset。如果您想先合併,請將fetch替換爲pull

你可能會在你的本地倉庫中有一堆懸而未決的提交,有一天git可能會進行清理,但有一段時間你仍然可以通過reflog訪問它們。

+0

相關知識:-) – 2011-01-18 22:15:31

+1

這裏有一個很大的問題:我有很多*添加*到工作樹。我只想接受/應用已經在遠程進行的所有更改。我不想扔掉我目前工作的所有狀態。所以這不適合我。 – rfay 2011-06-23 18:26:55

+0

@Randy,這是一個不同的問題,但是一個很好的問題。 – cdunn2001 2011-06-27 05:14:44

0

下面是我使用的方法,這似乎是好的。我有一個名爲「他們」的分支,其中包含遙控器中所有內容的新版本。一個名爲「我們的」的版本是我基於他們的一個早期版本的工作,其中有太多不相關的變化,但我想保留很多補充(站點/全部新的子目錄)。

git checkout ours 
git checkout theirs -- *.php *.txt *.config modules themes includes scripts 
git commit -m "New version with all new key files from 'theirs'" 

只要我在第二個簽出正確的文件和目錄列表正確,這應該沒問題。

如果我想歷史是基於他們的「他們」的分支,我可能會想這樣做的另一種方式。

+0

Randy,您可以編輯該評論,然後將每行代碼縮進8個空格(也許是4?)以顯示您的意思更好。 '--ours'和' - 他們'是有效的標誌,所以你應該使用不同的單詞來說明分支名稱。但是,是的,指定路徑將允許他得到這些文件。 – cdunn2001 2011-06-27 05:06:59

5

或者:

git status | grep "both " | cut -f2 | cut -f11 -d" " | xargs git checkout --theirs 
git status | grep "both " | cut -f2 | cut -f11 -d" " | xargs git add 

,這迫使接受所有衝突的遠程文件。

相關問題