2011-03-25 60 views
3

說實話,我遇到了困難與我的git倉庫。我一直在從兩臺不同的機器(例如在工作和家中)處理同一個項目。還有遠程存儲庫(origin),我保留代碼的主副本。如何擺脫git中的本地提交?

在開始時,我克隆了存儲庫表格origin master並開始了新分支(newfeature)。在日常工作中,當我完成工作變更後,我將我的提交從分支newfeature推到origin。當我在家工作時也一樣。

昨天我完成了家中新功能的工作,所以我查了一下master,然後合併了newfeature分支。一切都很順利,所以我把我的新master分支推到origin,然後在本地和遠程刪除newfeature分支。今天早些時候,我檢查出master,現在包含合併的新功能。當我現在運行git status時,它表示沒有什麼要提交的,但是我的本地分支master提前提交了origin master 38個提交。

我知道origin master有最新的代碼,我該如何擺脫任何提前提交的本地提交?

回答

3

在我看來,你的問題描述中有一些錯誤。

你是說你有一些提交的內容已經被推送到家中的原點。現在你開始工作,你檢查出主分支,它說它是在原產地/主人之前? 據我瞭解,起源/主人應該提前。

我這樣的情況下,你需要做的是:

  1. 確保你在看完全處於最新版本的你回購,這意味着它具有遠程

    所有最新資訊

    git fetch

這將從配置的所有遙控器取出,然後你就可以的,你主分支VS產地/主比較狀態,看看是否存在R被真正的差異或者只是沒有正確

  1. 同步。在您的工作流程的描述我希望所有的問題由剛剛

    git checkout master

    git pull

  2. 消失現在,當你說reset --hard帶你到你不喜歡的狀態 - 你不需要再次從遠程克隆。只是這樣做:

    git reflog show master

,然後重置你的主人回到提交它指向的復位 - 硬

之前,您應該在原點。

15

您應該origin/master重置master分支:

git checkout master 
git reset --hard origin/master 

警告:硬重置將丟棄在工作拷貝所有的變化,並使其完全一樣它是在origin/master

如果我沒有得到您的問題,或者您有其他想法,請記住git reflog是您的朋友。

+0

我做過'git reset --hard origin/master'。不幸的是,我昨天推到'origin'的變化現在已經消失了。所以它似乎將工作副本重置爲主機,這是之前的38次提交。我不得不再次從遠程克隆'master'。 – 2011-03-25 10:21:52