我剛開始使用git,並且對SVN的工作流差異印象深刻,但我遇到了一個結構/設置問題,文檔似乎沒有直觀地解釋如何設置,而我想知道這是否可能。從兩臺機器開發的Git存儲庫設置?
我的設置是我有幾臺電腦(臺式機和筆記本電腦)開發,所以爲了更容易保持同步併爲git存儲庫提供備份,我在家中建立了一個「公共」存儲庫Linux服務器,我可以從桌面和筆記本電腦ssh進入。它不是真正公開的,因爲它需要通過SSH訪問盒子才能訪問。
當我做我的桌面上的變化,我可以很容易地更改推送到服務器庫(我對origin
的mirror
標誌設置遠程對系統信息庫),並利用gitx
我可以看到我的問題就來了,當地的和遠程狀態看起來完全相同,並且我的每個單獨提交都已記錄到服務器。
問題是,當我切換到筆記本電腦時,我很少使用,git存儲庫可能存在服務器版本後面的幾個提交併需要更新。我開始使用git pull
來獲取這些更改本地,但不是將服務器上的所有單獨提交複製到本地存儲庫,而是向本地存儲庫添加一個新的「合併」提交,並且gitx
顯示遠程存儲庫分支中的合併點。
是否有一個命令/工作流程可讓我將本地存儲庫更新爲遠程存儲庫的確切狀態(例如,如果我執行git push --mirror
,則不會丟失任何數據)?我是否每次都要刪除我的本地存儲庫,並且每次都要再次刪除git clone
?
目前沒有其他人需要訪問此存儲庫,但將來它可能會成爲人們的公共存儲庫,所以不會破壞這種可能性的答案將不勝感激。
編輯:我的提交確實包括重新設置主分支的分支;這可能是什麼觸發git pull
命令顯示爲合併? --rebase
是我需要的標誌嗎?
解決方案說明:原來我已經做了以下設置我的倉庫:
- 使用筆記本電腦來初始化一個Git倉庫
- 推筆記本電腦資料庫服務器(提交一個)
- 作出的變更和提交它在筆記本電腦(筆記本在提交乙)
- 桌面克隆服務器存儲庫(提交一個)
- 請在桌面上的變化,並承諾(承諾ç,d,ē,包括重訂分支機構)
- 桌面推送到服務器端(server快轉發到Ë)
- 當筆記本電腦從服務器拉出,導致合併(因爲乙不能快進到Ë)。
- 筆記本電腦合併,並將更改推送到服務器
- 桌面現在也必須合併。
因爲這一個額外的提交是一個無意的newb錯誤,它使我認爲它總是一個合併。根據Xentac的建議,我回到了筆記本電腦,發現我合併時沒有推送到服務器,這是罪魁禍首,而且一旦我全部三個人真正同步,git pull --ff
(僅強制快進合併)工作得很好,如果在合併之前有什麼不同步,就會發出警告。