2013-05-29 50 views
1

通常我通過推碼達「主人」分支:混帳推變化的掌握,而不會覆蓋工作

git add . 
git commit -m "message" 
git push 

工作存儲最新的完美,應有盡有。

現在有人從不同的位置完成了'主'的工作。

如何將我的更改推送給主人,而不覆蓋他的更改 - 將代碼更改保留在他的提交中完好無損?

當我做我的正常混帳推我得到:

[email protected]:~/Populisto$ git push 
To [email protected]:Christophe1/Populisto.git 
! [rejected]  master -> master (non-fast-forward) 
error: failed to push some refs to '[email protected]:Christophe1/Populisto.git' 
To prevent you from losing history, non-fast-forward updates were rejected 
Merge the remote changes (e.g. 'git pull') before pushing again. See the 
'Note about fast-forwards' section of 'git push --help' for details. 
[email protected]:~/Populisto$ 

如果我使用「混帳推-f」,不就是改寫,他所做的一切?

謝謝。

回答

3

在你做一個git push之前,你必須做一個git pull。其他人的工作必須先與代碼合併,然後才能將更改推送到存儲庫。 git pull會保持你的更新後的代碼保持原樣,並且只能從上次提交(他人的代碼)中添加/更新代碼(意味着git會合並代碼)。

在情況下兩者的開發商已經在同一段代碼工作,然後git會顯示衝突這必須解決第一。

+1

可能是一個愚蠢的問題,但...當我做一個混帳拉,它不會取代我的電腦上的所有更新的代碼與github上的舊東西?我的意思是,在我的電腦上唯一需要改變的地方是上次提交的內容 - 其他人所做的更改? – CHarris

+1

提問基本問題無損。 git pull會保持你的更新後的代碼保持原樣,並且只能從上次提交(他人的代碼)中添加/更新代碼(意味着git會合並代碼)。如果你和其他人在同一個文件(或同一段代碼)上工作,那麼git會提示一條消息,說明存在衝突並且合併不能成功完成。然後你將不得不解決衝突並完成合並過程。 –

+0

感謝您的幫助,排序問題。 – CHarris