2013-01-15 61 views
0

使用任何類型的,因爲缺乏周圍認識的版本控制我沒去過,但只是使用Git 所以我知道git add {filename}, git commit -u {filename}, git push origin master基本命令的開始。如何在使用Git的情況下遷移多個版本的代碼?

作爲一種方式 跟蹤之前GIT中的變化,我正在我上例如工作的每個文件的多個副本原始文件可能已 被命名abc.php,第一改變可能已abc_20130101.php命名,第二個變化,abc_20130102.php, 等

看到,這些都是經過一段時間,我的變化有多個文件, 將這些遷移到託管服務的最佳方法是什麼GitHub,BitBucket等

我是否創建單個存儲庫&克隆存儲庫?然後,我想避免將文件作爲 單一推送,因爲它們實際上是不同的版本?什麼是最好的方法?我會怎麼做?

回答

2

David Culp的回答非常好,而且打字速度稍慢。無論如何,我會離開我的。

我的建議是要離開你的舊文件,因爲他們,並讓他們作爲存檔。從今天開始使用Git,並讓它跟蹤對文件的新更改。

如果你真的想要得到你的發展歷史到Git的方法,我會做一個全新的存儲庫中的以下內容:

  • 複製您最古老的abc.php的版本到存儲庫,確保它的命名ABC .php(即從文件名中刪除日期),以及相同日期的任何其他文件相同。
  • 做一個git add .
  • 做每個版本git commit -m "Files from 2013-01-01"
  • 重複按時間順序
  • 推到GitHub上/到位桶

一定要最後添加您的當前版本。

注意:如果您是自己工作,則不需要像GitHub/BitBucket這樣的在線服務。 Git可以在PC上獨立運行。

+0

謝謝加文。我認爲,在每次重命名文件時,它會覆蓋以前的版本,當我提交併推送時,這並不重要?我不完全按照你的意思,Git可以在PC上獨立存儲庫中正常工作。我想要使​​用像GitHub這樣的服務的原因是要獲得經驗,養成版本控制的習慣,並最終在需要時分享用戶之間的共享。 – PeanutsMonkey

+2

是的,你覆蓋了以前的版本。當你提交'git commit'時,它會拍攝你的文件的快照,並且這個快照會永久保存下來。您可以使用像gitk這樣的圖形工具查看歷史記錄,包括每個新修訂版所引入的確切更改。 – GavinH

+0

'Git可以正常工作在PC上的獨立版本庫中。「 - 我想我說的是Git的目的是捕獲並共享文件的更改。如果你自己工作,你不需要分享變化,但捕獲部分仍然非常有用。這是一個巨大的信心提升知道,無論你搞砸了一個文件有多糟糕,你總是可以使用Git回滾到以前的版本! – GavinH

0

如果你想讓git倉庫反映項目的歷史,那麼需要一些努力。

的基本步驟是把所有有日期(存檔文件)的文件列表。使用此打造「修訂」的列表,然後執行以下操作:

for each revision 
    recreate the project as it was in that state (renaming files so they don't have dates) 
    copy the files to the repository 
    add files to index 
    commit files to repository 

在你最終會得到一系列代表項目的開發提交的結束。這可能是一個很大的工作,取決於你最終的修改數量。

您可能能夠腳本的大部分工作,但它可能最終會被更容易地做手工。

然而,這將導致在每個日期有一個文件更改提交的存儲庫。通過組合與單個項目功能相關的「修訂版」,可以減少提交次數。

+0

只是爲了讓我明白,修訂將從它開始的那一天起重命名每個文件。例如,如果原始文件被稱爲abc.php,這將被添加第一,提交和推,我會然後重命名abc.20130101.php abc.php(這不會覆蓋我的本地pc上的文件),添加它,提交和推送等,這是你的意思? – PeanutsMonkey

+0

是的,從最老的和以對項目有意義的塊開始,按順序提交它們,直到項目只有最新的所有文件。這會爲您提供一個存儲庫,其中包含到目前爲止對您的項目進行更改的提交進度。 –

+0

是的,重命名將覆蓋同一文件的早期版本,但由於它是作爲早期版本提交的,因此如果需要,您可以隨時返回該版本。一旦發生,git不會忘記它。 –

相關問題