2014-06-19 98 views
0

我在兩臺不同的計算機上運行etckeeperboxAboxB。操作系統etckeeper存儲庫和所有boxB是從boxA複製回來的。爲了應用上boxA作出boxB一些設置的改變,我加入了資源庫上boxA作爲遠程倉庫上boxB有做一些採摘櫻桃的意圖,例如:git fetch - 缺失提交

git remote add boxA ssh://boxA/etc 
git fetch boxA 
git cherry-pick xxxx # never got this far 

的問題是,最近提交不在boxA上提供,僅在2月下旬才提交。到目前爲止,我曾嘗試:

  • git show與丟失提交一個號碼 - 這絕對不是git log只是沒有顯示所有提交的問題。

  • 複製上boxA/etcboxB和添加/通過其路徑獲取它 - 這絕對不是由ssh(不知何故介紹給東西我是通過GIT_SSH環境變量使用腳本來避免創建一個複雜的問題root登錄)。

  • git fsck在這兩個存儲庫(沒有發現問題)。

  • 兩個庫的複製版本,運行以下命令(在做一個boxBgit remote remove boxA和readding前):

    git -c gc.reflogExpire=0 -c gc.reflogExpireUnreachable=0 \ 
        -c gc.rerereresolved=0 -c gc.rerereunresolved=0 -c gc.pruneExpire=now gc \ 
        --aggressive 
    

我怎樣才能得到git fetch檢索所有提交的?

+0

你是什麼意思大多數「最近的承諾不可用boxA」? boxB上的遠程分支遙控器/ boxA/master不可用? git remote show boxA說什麼? git fetch -v boxA說什麼? (在boxB上執行) –

+0

@UweGeuder,我設法讓自己瞭解了這一點。通過提交不可用,我的意思是我無法通過'git log boxA/master'或其他方式查看它們,並且無法將它們應用於'git cherry-pick'。 – Graeme

回答

1

因此,這裏的問題原來是在boxA的存儲庫中存在一個detached head,因爲一個未完成的修復了一個拙劣的rebase。當這種情況發生的git branch輸出如下:

# git branch 
* (no branch) 
    master 

fix只是對boxA創建一個分支,然後將其合併:

git branch temp 
git checkout master 
git merge temp 
git branch -d temp 

之後分支主所有提交(或至少我認爲是分支大師)在做另一個git fetch後可用。

+1

當你提到它時有意義。分離的HEAD可以通過提交向前移動,但不會更新引用。根據參考提取作品。 –