2016-09-01 62 views
0

我在設計我的應用程序,並在某個時候意識到,我正在做的是一個單獨的分支。我正在將本地存儲庫中的更改提交到「master」,但未提交到遠程存儲庫。如何在Git中將「主」標籤移動到過去的某個點?

在我的VCS日誌中的IntelliJ我看到以下畫面:

enter image description here

即我有兩個與我分開的發展道路和遙遠的。

HEAD位置表示我已經檢出位置,我希望master位於此位置。

我怎麼把主人放在這裏?這個操作的名字是什麼?合併?變基?或者是什麼?

我想離開我的分支爲AsyncIntegrate並讓我與origin/master同步。我還沒有準備好合並這些平行線。

UPDATE

對不起,最後祝移動masterorigin/master是:

enter image description here

我想這應該在2個步驟來完成。

更新2

這將是正確的,如果我來自的IntelliJ調用以下命令:

enter image description here

+0

這還不清楚。你是說你想用本地的東西或其他東西來覆蓋遠程的'master'嗎? –

+0

@TimBiegeleisen看到我的更新請 – Dims

+0

我給你下面的回覆。儘管如此,你的措詞還不完全清楚,但如果我對你的前提的假設是正確的,那麼其餘的就應該起作用。 –

回答

3

這聽起來像你想你的當前分支轉移到一個所謂的新分支AsyncIntegrate,然後將您的本地master重置爲origin/master

創建功能分支:

git checkout master 
git checkout -b AsyncIntegrate 

重置您的本地主原點/主:

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

git fetch以上步驟是非常重要的,不應該被忽視,因爲它將更新您當地的跟蹤分支origin/master與當前事態的關係e實際的遠程master分支。如果由於某種原因你想使用(可能陳舊)origin/master,那麼你可以省略這一步。

更新:

深呼吸,放鬆,因爲那裏的東西是災難性的在這裏發生的機會不大。您在本地master分支上所做的所有工作(可能不正確)現在應該在名爲AsyncIntegrate的新本地分支中安全。並且您的本地master只會與遠程的狀態同步,遠程通常是您想要的狀態。

即使您要放棄您之前正在處理的提交,您也可以隨時從Reflog中恢復它。

+0

第二個'git checkout master'的用途是什麼? 'git fetch'後我仍然會在'master'上,不是嗎? – Dims

+0

我試圖儘可能使步驟儘可能獨立,以最大限度地減少可能出錯的機會。是的,如果你同時做兩個步驟,那麼第二個'git checkout master'是多餘的,可以跳過。 –

+0

'git reset --hard origin/master'後,我的磁盤文件會發生什麼?它們會被提交'origin/master'的服務器中的文件替換嗎? – Dims

相關問題