2013-06-29 88 views
0

我認爲使用git(用於web開發)並在lynda.com上觀看了很多課程並閱讀了一些博客文章。但有一個問題我找不到答案,或者不明白它是如何工作的。Git:如果我在推送前忘記更新會怎麼樣

我有一個Web服務器,本地服務器上的回購和本地機器上的回購。

如果我在更改本地服務器/ Web服務器(由其他團隊成員更新)的同時處理該文件,該怎麼辦?會有警告嗎?它會自動合併?它會覆蓋文件嗎?

例如:我編輯一些CSS和PHP文件,忘記更新我的本地文件。當我將這些文件提交到文件較新的本地服務器時會發生什麼?

+0

你的意思是「拉前推」?提交僅在Git中是本地的,不會修改遠程存儲庫中的任何內容。 – nif

+0

是的,我認爲「推」不是「承諾」。對不起,這對我來說都是新的:-) – quinny

回答

1

當你在git(又名你的服務器)中推送到遠程時,如果你的本地版本的分支和遠程版本之間的提交順序不是線性的,那麼推送將被拒絕(永遠不會-annoying「非快進」問題)。如果你想避免這樣的問題,最好的辦法是在推送之前確保你的服務器上有最新版本的代碼。我會做的是以下幾點:

在推送到遠程之前: - git remote update提取所有的遙控器。 - 如果您的工作目錄中有更改,git stash將暫時保存並清理您的工作目錄。 - git rebase origin/master將適用mastermaster最近的共同祖先與origin/master之間的提交到origin/master和移動master分支到這個新的位置

很明顯,你可以選擇你的遠程和分支取代originmaster。現在,當您推動時,您不必擔心非快速轉發問題,並且您可以確保在推送之前處理最新版本的代碼。

或者,您可以對其進行設置,以便只有一名開發人員可以推送到您服務器上的分支,因此您不必擔心多人推送到服務器:相反,一名開發人員管理所有更改服務器。

+0

謝謝,邁爾斯。直到現在我還沒有讀過很多命令。將檢查他們,看看是否適合我。 – quinny

0

它不會覆蓋文件。它可能只是適用於這兩個更改(你和你的團隊成員)。如果兩者都修改了文件的相同部分,就會有衝突,您必須解決然後再次推送。

+0

謝謝! ......「會有衝突」意味着我得到一個警告,告訴我問題在哪裏?就像我們兩人編輯#37 - #64的行一樣? – quinny

+0

Push不會合並,它只會嘗試更新遠程參考。即使兩個更改都可以自動合併,它也會引發錯誤。 – nif

相關問題