2012-01-27 108 views
1

在這裏,我們正在遷移我們的源代碼github上,本次交易是給我頭痛:)
我所做的:我走了我們的工作空間(是一個Eclipse項目),並沒有git initgit add .然後git commit -am "first commit"
一切正常,然後,我只是推到github。成功了。
但有一個很大的問題:我的朋友只是對名爲A.java的文件進行了更改,而我剛更改了B.java。好的,沒什麼大不了的。然後,他把它推到github上。當我嘗試推動時,我的推動被拒絕。好吧,我做了一個git pull github master,然後再次推送,現在,我的'提交消息'變成Merge branch 'master' of github.com:germantech/projectName
好吧,我在做什麼錯了?
PS:抱歉,我的英語混帳提取和拉

回答

3

你沒有做錯什麼 - 當你做git pull github master,混帳變成由遠程github指示的存儲庫,獲取所需master分支的一切,然後將其合併到您的當前分支。拉之前,您有以下病史:

O --- A (master) 

...其中O是消息「firts承諾」和A提交是提交介紹了您的更改A.java。您的朋友,同時,具有歷史:

O --- B (master) 

...並已推入到GitHub上。當你的git pull github master合併到這一點你的歷史,它創建了一個「合併提交」來代表樹的狀態,從兩個master分支的變化:相反,如果你想保持歷史線性

O --- B --- M (master) 
\  /
    ---A --- 

,你可以做git pull --rebase github master,這反而會會「重播」您提交不在分支的最重要的是遠程版本刪除分支的版本:

o --- B --- A' (master) 

有些人喜歡 - 我親自唐不在乎。

+0

will --rebase maintain my commit message?或者他會改變它? – 2012-01-27 11:00:18

+0

--rebase不會更改我的提交消息。什麼是可取的?拉或拉--rebase? – 2012-01-27 11:11:26

+0

它將保留提交消息(以及作者信息和作者日期) - 將會更新單獨的提交日期和提交者信息。 – 2012-01-27 11:12:11

1

你在同一個回購站或不同回購站?如果你需要重新設置你的更改並再次推送

git pull --rebase github master 
git push github master 
+0

fyi,--rebase將你的提交放在你的朋友提交的頂部,這樣你就可以不用合併或者更好地推送你的歷史記錄。 – three 2012-01-27 10:59:23

+0

你是什麼意思'differente回購'?我們都使用相同的github回購。你是這個意思嗎? – 2012-01-27 10:59:43

+0

不,您當地的回購。計算機1和2. – three 2012-01-27 11:02:42