2017-08-28 74 views
0

我的任務是從SVN遷移到Git,但我不確定如何在當前的設置下執行此操作。以下是目前SVN存儲庫的工作原理:在生產環境中從SVN遷移到Git

我們有一個開發服務器和一臺生產服務器,它們都連接到單個SVN存儲庫。我們在本地進行更改並將其保存到開發服務器。每當我們對這些改變感到滿意,我們將它們提交到開發服務器的svn倉庫(svn commit ...),然後在生產服務器上更新它們(svn update ...)

我們現在想要使用Git,但我不確定如何反映相同或相似的行爲。我最初想到的是擁有一個包含兩個分支(dev和master)的單個Git存儲庫。唯一的問題是,開發和生產服務器不同步;在開發服務器上有很多文件發生變化,反之亦然。我如何能最好地解決這個困境?

編輯:我經常看到這一點。請指定降低投票的原因,以便我可以改進我的答案。

+0

如果您已將版本控制從部署過程中分離出來(即不是僅在生產服務器上使用實時工作副本),那將更容易。 – crashmstr

+0

@crashmstr那會很理想。儘管如此,我仍然使用舊版本的開發工具。 – driima

+0

即使只有批處理文件或shell腳本將內容複製到服務器,您也希望此時將您的部署放入不同的進程。這允許你使用不同的部署,功能分支等。 – crashmstr

回答

2

Git和SVN都是版本控制系統,但它們不能以完全相同的方式工作。他們有不同的工作流程。

Git是一個分佈式版本控制系統,看到https://en.wikipedia.org/wiki/Distributed_version_control

我建議先從單個共享Git倉庫有一個分支,每個開發者的工作站上的本地存儲庫。通過克隆共享庫來創建開發人員的存儲庫。然後你必須習慣於在你的工作流中增加一個額外的步驟:在SVN上,你曾經只是'提交',在Git上你必須'提交',然後'推送'到共享庫。

然後從這裏閱讀SVN頁面上的Git:https://git-scm.com/course/svn.html 這將幫助您從SVN的角度理解Git。

+0

在每個開發人員的工作空間上有一個本地回購是我們正在討論的內容。儘管如此,我們希望有能力爲不同的目的設置不同的環境。例如,開發環境和生產環境。我們還希望能夠添加更多環境,例如臨時環境。在這種情況下,是否像提交併推送到開發分支那樣簡單,然後將其轉換爲分段分支和/或主(活)分支? – driima

+0

您必須在每個開發人員的工作區上擁有本地回購,這是分佈式版本控制工作的唯一方式。對於不同的環境,您將使用不同的分支,正確。在這種情況下,你會提交然後推送到開發分支,然後*從開發合併*到另一個分支。 –