2010-05-25 67 views
10

我的工作場所使用Subversion進行源代碼控制,所以我一直在玩git-svn來獲取我自己的分支的優勢,不需要觸摸主要的回購就可以經常提交。Git force完成同步到主

由於我的git svn checkout是本地的,我已經將它克隆到網絡共享中,以作爲備份。我的想法是,如果我的桌面需要轉儲,我至少會有網絡共享上的repo來獲得我還沒有機會完成的更改。

我的工作流程是從桌面工作,進行更改,提交等。在一天結束時,我想用當前的所有更改更新網絡共享上的回購。我已經使用git clone repo_on_my_desktop在網絡共享上設置了回購協議,然後使用git pull origin master更新了網絡共享上的回購協議。我遇到的問題是當我使用git rebase壓縮多個提交,然後將其提交到主svn存儲庫。當我這樣做時,當我嘗試在晚上進行備份時,我在網絡共享上的回購上遇到合併衝突。

是否有一種方法可以完全與我的桌面上的存儲庫完全同步,而不必每晚都進行新的git clone

回答

8

兩點意見:

1 /我會建議具有或者bare repobundle(一個文件,更容易移動)爲您的網絡共享

2 /我寧願加network_repo當作遙控您的桌面回購和從那裏推(git push --force network_repo master):你留在你的工作回購。

25

如果您打算從其他回購協議中撤回,則不應該進行重新分配。

如果你不介意在覆蓋網絡份額的變化,你可以這樣做:

git fetch origin master 
git reset --hard origin/master 

這將本地主復位到原點的主人。

警告:這是一個重置,它將失去所有的更改(提交*或不)。

但我假設你並沒有真正做出任何改變,而且它大部分只是一個備份。

*注意:從技術上講,承諾的更改不會丟失,直到它們從reflog過期,但是出於所有意圖和目的,它們實際上已經丟失。

+0

不,它不會刪除多餘的文件。 – felixh 2018-02-02 08:15:29