2015-05-21 59 views
0

我有一個遠程主分支和一個本地調用「功能」。我之前已經和主人合併過,並且在本地分店做過多次更改。儘管如此,我還沒有把它推回到掌握之中。所以當我試圖「拉動」時,它只會說「一切都是最新的」。 另一方面,「主」中的文件和「功能」中的文件是不同的,我想擺脫我們有的幾個本地文件,但是主人不會。 我需要的是一種再拉主令並將每個文件標記爲衝突的方式,以便我可以選擇我需要的和我不需要的。 重新調整本地更改不是一種選擇,因爲我會丟失所有我實現的代碼。 感謝您的幫助!重做git合併

+0

「我希望得到本地擺脫幾個文件,我們有,但主人沒有。」 =>你在'feature'中添加了這些文件嗎? '主人'把他們刪除了嗎?從'master'合併之前或之後? –

回答

0

嘗試一個git reset HEAD~1讓git認爲它是歷史提交(或者如果主更改跨越多個重疊提交,則更改1),然後是git pull …

0

你需要作出的區別分支之間(masterfeature,你mergepull),和remotes(需pull,以及相關的消息Everything is up-to-date)。目前還不清楚你的情況是什麼,你想從哪裏嘗試pull?什麼分支?

據我瞭解,您擁有的一切都在分支master已經合併分支feature

歷史如果您正在運行git pull當你有分支feature簽出,git嘗試fetch新承諾從remote回購,然後合併它們(如果有)到feature。這假定feature有一個遠程跟蹤分支,但如果該命令完全可以工作(沒有參數),它可能有一個。

由於git pull表示feature是最新的,因此您似乎已將分支feature推送到其遠程跟蹤分支(遠程回購)。你拉,它告訴你沒有更多的事情發生。

另一方面,您可能會認爲master是最新的。

如果你想「擺脫我們有的幾個本地文件」(在feature,我想),那麼什麼阻止你刪除它們? git rm <file to get ridden of>。在feature上這樣做,你不會影響master。像往常一樣承諾。

如果您想要放棄的feature中有更改,並獲取它們在主文件中的文件,您可以git checkout master -- <file to get>。這將您的本地文件更新爲master狀態,但不更改分支,您仍然在feature。使用這些更新的文件在feature上創建新的提交。

你還可以做的是一個交互式底座。 git rebase記錄feature中的更改,並讓您可以在其他(或相同)提交之上「重放」它們。除此之外,git rebase --interactive可以讓您在重放階段跳過提交,甚至可以編輯在重播之前提交的內容。例如,您可以在重播階段修改提交,而不是添加不必要的文件。

最簡單的將是git checkout master -- <file>,如果只是刪除不必要的文件不起作用。

0

謝謝大家的回答! 我最終做的是: 1.檢出主 2.物理複製每個文件夾主已經到不同的位置 3.簽出功能 4.開始一個文件夾比較「超越比較」,並逐一編輯每個文件有時候會考慮功能的變化,有時候是主人的。

這是不是一個真正的git的解決方案,並採取了一段時間,但它的工作:)