2017-10-07 145 views
1

在這裏,我寫了我遵循提交代碼的git命令。Git合併&拉代碼和本地更改丟失

git merge <branch1> --no-commit 

所以我得到了該分支的代碼,我開始研究它。我沒有將代碼合併到只有主人。現在我已經完成了我的代碼,並嘗試從其他人那裏獲取更改。

git pull origin master 

我得到的錯誤說MERGE_HEAD存在請提交您的文件。所以我通過輸入這些命令來提交代碼。

git add . 
git commit -m "<commit message>" 

現在我試圖通過重新設置代碼來拉代碼,正如我平時所做的那樣。

git pull origin master --rebase 

現在一切都很好,承諾也看起來不錯。所以我去了codebase並檢查文件。我所有的改變都消失了。我在哪裏做錯了?我仍然不知道。請幫我找到最新的錯誤。先謝謝你。

+0

你可以在'git reflog'中找到你的改變嗎? – choroba

+0

你必須在合併你的分支之前拉。合併前您還需要重新綁定。你有這個錯誤信息,因爲你試圖合併兩個不同歷史的分支 – Woody

+0

「現在一切都很好,提交也看起來不錯,所以我去代碼庫和檢查文件,我所有的更改都沒有了」 - 你能解釋一下嗎? ? 「承諾看起來不錯」是什麼意思?你看到你的變化嗎?那麼,什麼是「代碼庫」,哪裏沒有看到變化? – max630

回答

1

以下是帶給您的更改從分支到主步驟:

git checkout master 

就是要推動你的改變

git pull origin master 

分支檢索您的團隊的提交

git checkout your-branch 

檢索您的分支

git rebase master 

檢索主的所有提交,之後把你的變化

git checkout -b your-branch.1 

你不能犯上你的分公司本身你的遙控器是不一樣的,你的本地分支作爲底墊中改寫歷史

git push origin your-branch.1 

把你的分支,你準備合併

git checkout master 

即分支你想合併的地方

git merge --no-commit --squash your-branch.1 

合併您的分支與主。壁球將把你的所有提交放入一個。沒有承諾將讓你寫一個不錯的提交信息

git commit -m "here is my commit message" 

來樣讓你的團隊成員你的變化是約

git push 

發佈更改

+0

因此您正在爲這些新更改創建新分支。爲什麼??我已經有了我的分支。那麼爲什麼我應該創建一個新的分支?你能解釋一下嗎? –

+1

用master重新設置你的分支將改變提交的歷史記錄:你將獲得所有來自master + yourrs的提交。但是,這些更改只適用於本地git分支,所以您的遠程分支將獲得不同的歷史記錄,並且git不會允許您因此推送本地分支。這就是爲什麼你必須創建一個新的分支(.1只是給出一個線索,而不是一個「新」版本) – Woody

0
git merge <branch1> --no-commit 

所以我得到了該分支的代碼,我開始研究它。

這不是一個答案,但在這裏你似乎做錯了。通過不承諾,您正在將您的開發更改與以前的合併進行混合。這可能會造成更多的歷史分析。

+0

我錯誤地理解了--no-commit的含義。所以我喜歡這樣並開始編碼。但在合併之前我更改代碼時沒有問題。所以我繼續。現在我的代碼已經不存在了,再次執行。 –