2017-05-30 102 views
1

我對Git條款不太熟悉,所以請使用更常用的術語和解釋。我正在使用Github桌面,我已經將其提交到我的分支。現在我想打開pull請求給master,但是在我這樣做之前,我首先使用「從Master更新」選項來獲取master的所有更改,以便在執行pull和merge操作時,我不會得到任何主人衝突。如何「重置」更改爲「從父分支合併」?

當我師父做更新,我得到了一些衝突。像往常一樣,我去解決這個衝突。但後來我意識到,我不正確地解決衝突,我想「重置」文件的狀態,如衝突的開始,所以我可以做。我不知道現在該做什麼。

  • 我試圖git stash所有的變化,所以我可以「更新從大師」了,但在git stash失敗。而且git stash以前從來沒有失敗過。 (fatal: git-write-tree: error building trees Cannot save the current index state)。
  • 我試圖git reset但似乎沒有復位。而我所知道的是git reset實際上是取消了我的最新提交,所以我害怕我的提交現在搞亂了來自master的更新和未提交的代碼。

我應該做些什麼來「重置」文件的狀態,如衝突的開始,所以我可以做衝突解決了嗎?謝謝。

+0

我使用sourcetree應用程序,因此與UI更容易。 –

+0

參考:https://git-scm.com/book/en/v2/Git-Branching-Rebasing – Gahan

+0

@LucaC。我也使用sourcetree。但是在這個時候,我也不知道在sourcetree做些什麼來解決這個問題。我通常使用github桌面,因爲它更簡單,並完成工作。如果需要解決問題,請使用sourcetree,就像這樣。但這太麻煩了,不能修復。 –

回答

1

如果合併是錯誤的,你可以執行此步驟:

  • git的復位HEAD〜1個
  • git的補充。
  • 的git的復位 - 硬

這將刪除最新提交。現在你可以重新合併。

但我也建議另一種解決方案來解決合併衝突:變基。藉助rebase,您需要移入功能分支並運行一個命令,如git rebase -i master。如果沒有衝突,它就像你的分支從最新的主人開始:就像你的主人將會是最新的一樣。一個rebase移動所有的提交,所以當一個rebase遇到衝突時,rebase會「暫停」,並且你被邀請解決每個衝突。如果按照底墊中的說明,爲每個有衝突的提交你需要修復的手,git add提交,然後git rebase --continue(只是按照命令指令)。

+0

哇哦,我從來不知道這種方式來使用衍合。謝謝!順便說一句,我已經用'git stash -u'解決了我的問題(儘管我不知道'-u'的含義),但你的回答也回答了我的問題:爲什麼我的'git reset'沒有工作。 –

相關問題