我目前正在從事一個項目,我的僱主已經給我編寫了訪問項目的主要存儲庫的地方,他在那裏合併了我在工作的存儲庫,我想。我指定了一個特定的分支。我可以在Git中將一個存儲庫的更改推送到另一個存儲庫嗎?
現在他希望我做一些更改並將它們推送到此存儲庫。我之前沒有在大型項目上使用過Git。是否有可能只是在我正在工作的存儲庫中進行更改並繼續推送到主存儲庫並且Git將繼續合併它們?這個怎麼用?
我目前正在從事一個項目,我的僱主已經給我編寫了訪問項目的主要存儲庫的地方,他在那裏合併了我在工作的存儲庫,我想。我指定了一個特定的分支。我可以在Git中將一個存儲庫的更改推送到另一個存儲庫嗎?
現在他希望我做一些更改並將它們推送到此存儲庫。我之前沒有在大型項目上使用過Git。是否有可能只是在我正在工作的存儲庫中進行更改並繼續推送到主存儲庫並且Git將繼續合併它們?這個怎麼用?
Git推送不合並任何東西;它只是將對象傳送到遠程存儲庫並更新分支頭。它基本上是一種具有修訂意識的文件同步形式。
所有的編輯都在本地進行,所以它與Git一起:在本地回購中執行所有提交準備,合併等操作。上游存儲庫甚至不能完成大部分這些工作,因爲它們是「裸露的」:它們沒有工作樹。如果您要登錄到服務器並輸入上游Git存儲庫,則無法進行任何重新綁定或合併或其他任何操作。
我猜老闆已經爲您的本地存儲庫設置了主存儲庫作爲「遠程」。看一看.git/config
文件。
如果一切設置正確,您應該可以提交到本地分支,然後執行推送操作以使上游分支看起來像本地分支。
如果其他人向您的分會推送了某些內容,則可以將其更改與git pull --rebase
相集成,修復衝突並重試。合併全部在本地完成。
當您正在推送的新更改基於與上游分支頭相匹配的相同父代提交時,您的推送將會成功:即沒有比您正在處理的基準更新的上游。在這種情況下,你的變化是一個「快速變化」。
Git檢測並阻止非快進變化(意味着上游存儲庫中的分支上存在更新的東西,如果您的分支版本被推送,將會被破壞)。因此,當您的更改準備好發佈時,嘗試git push
並沒有什麼壞處。當它不起作用時,你必須拉動整合,然後再試一次;上游不做任何整合。
這是可能的,但您確實需要了解Git和分佈式版本控件的工作原理。 Git使用幾種常見的工作流程,您應該與您的僱主覈對以瞭解他們如何使用它。這裏是一個基本的教程:https://www.atlassian.com/git/tutorials/comparing-workflows/
我試圖克隆到我已被授予寫權限的存儲庫中。花了幾分鐘時間克隆整個事情。但是當我最終打開時,它只是讀了一個文件,沒有別的。這是因爲我沒有閱讀權限或什麼? – Rohan 2014-12-19 03:50:15
@Rohan你的意思是「試圖克隆遠程倉庫來創建一個本地倉庫」,對吧?你沒有看到任何東西的一個可能的原因是你沒有在正確的分支上。你可能需要做一個'git checkout'。也許默認的'master'分支除README文件之外沒有任何東西,因爲你的團隊完成除'master'之外的所有分支的工作。做一個'git branch -r'來查看所有的分支。 –
Kaz
2014-12-19 04:00:35
@Rohan請注意,爲了獲得正確的分支,您不必從遠程倉庫提取任何新物料;克隆已經吸引了所有的對象。分支結帳純粹是一個本地操作。 – Kaz 2014-12-19 04:05:07