2017-02-28 68 views
2

我從我的項目中檢查了特定的提交,並從那裏繼續,希望在提交之後的更改將被刪除,並且我檢查到的提交將是新的頭。我做出了新的改變,但我無法推動它們。我還是新來的git。如何從特定提交中繼續項目並修復HEAD分離問題?

我所做的是:

  1. git的結帳commit_hash
  2. 編輯項目
  3. git的承諾-m 「新變化」
  4. 混帳推-u起源主

我得到了:

To https://github.com/myusername/project.git 
! [rejected]  master -> master (fetch first) 
error: failed to push some refs to 'https://github.com/miloradsimic/ISA16.git' 
hint: Updates were rejected because the remote contains work that you do 
hint: not have locally. This is usually caused by another repository pushing 
hint: to the same ref. You may want to first integrate the remote changes 
hint: (e.g., 'git pull ...') before pushing again. 
hint: See the 'Note about fast-forwards' in 'git push --help' for details. 

當我輸入 git的狀態我:

HEAD detached from 506f0ec 
nothing to commit, working directory clean 

我改變了項目的層次結構,在頭承諾,所以我要讓它回到以前的狀態。我不想將它與頭部合併。

我這樣做(簡單的方法,不專業): 我曾在一個文件夾項目的變化,沒有定位在頭上。 我將頭部提交下載到新文件夾中,並將我對該文件夾的更改複製到文件夾中的所有文件(git文件除外)。刪除了不必要的文件。添加了所有更改,提交併推送。

感謝,米洛拉德·西米奇

回答

2

當我們籤一個承諾散列我們不再分支detached HEAD)。

磁頭從506f0ec

分離爲了解決它只是創造一個新的分支,做的改變,做新的承諾,一鍵遙控器。

簽出到提交哈希。

$ git checkout <commit-hash> 

你可以做更改/提交這裏,後來推到遠程之前創建一個新的分支(你的情況在這裏)。但我更喜歡先創建一個新分支(比如dev)。

$ git checkout -b dev 
// do changes here 

$ git add . 
$ git commit -m 'message' 
$ git push -u origin HEAD  # push to remote/dev 

合併dev分支到master分支:

您需要merge dev branchmaster分支,讓您的新的變化。

$ git checkout master 
$ git pull origin dev  # pull 'dev' new changes into 'master', pull = fetch + merge 

$ git push origin HEAD  # update origin/master 

如果要重置masterdev分支的變化,然後用dev分支取代master更換master分支dev分支

$ git checkout dev 
$ git branch -D master  # delete local master branch 

$ git checkout -b master # create new local/master branch with exactly 'dev's' history 
$ git push -f origin HEAD # force(-f) push to remote since git history is changed 

注:現在masterdev具有相同的提交/更改。

+0

我創建了新的分支,但現在我有2個分支,master和dev。 我可以作爲最終結果只有主分支與來自curent dev的數據嗎? –

+0

是的,你可以。我猜'master'是你的'Default branch',所以不要刪除'default'分支。你想現在用'dev'分支替換你的'master'分支嗎? –

+0

我有要從主服務器刪除的文件。我可以再次去掌握頭腦,並在下一次提交中刪除我不需要的遠程文件? –

0

檢查「git狀態」,如果您有更改尚未完成提交,請先暫存「git stash」一段時間。

嘗試使用「git pull --rebase」

之後嘗試再次提交。 如果您再次遇到同樣的問題,請告訴我。

0

你可以做git reset --hard <commit-id>

然後進行更改/提交。

乾杯