2012-02-08 70 views
0

我有一個C++項目,當給定相同的輸入時,它在兩臺不同的機器上的運行明顯不同。我希望程序在兩臺機器上運行基本相同。當我在我的本地機器上,在那裏我一直在寫程序上運行用git管理的C++項目在不同的機器上運行不同,輸入不同

git push origin master 

,它告訴我,倉庫(在github)是最新的更新。我已經做了

git clone 
第二臺機器,這是一個計算集羣上

,並沒有錯誤編譯的代碼存在。代碼在羣集上運行得很好,但似乎與舊版本的程序類似,而不是我在個人計算機上的版本。我的問題是這樣的:是否有可能github版本過時,或者我的本地版本的代碼與github版本的同步一路搞亂了?

請記住,我是git的新手。提前致謝。

編輯:我發現這可能是由於兩臺機器的體系結構有所不同。它們都是x86_64英特爾處理器,但對指數函數的快速逼近(取決於雙精度和字節序的大小)不適用於第二臺機器。長話短說:這不是git的問題。

+1

魔法錯誤?聽起來像未定義的行爲 – 2012-02-08 19:49:09

+0

在推送之前是否真的將本地更改提交到本地存儲庫? – Kitsune 2012-02-08 19:54:21

+0

是的,我犯了他們。 git狀態報告沒有變化。 – Thucydides411 2012-02-08 19:57:12

回答

0

您是否在上次推送後克隆了回購協議?正常的過程通常是使用克隆來獲得此時的任何背景信息,然後使用「git pull origin master」進行更新(或者,如文檔所述,最好是「git fetch origin」,後面跟着「git merge」起源/主控主「,這是等價的,但允許您更具體地瞭解合併應該如何進行,如果是在某處開發並在其他地方部署然後使用拉的簡單情況)。

正如上面的註釋中指出,爲推動東西的過程如下:
第1步:添加文件:
git add -i
添加你改變任何文件和文件要提交,或者你可以使用:
git add <filename>對於每個文件都是特定的,而不是使用交互式工具。
第2步:提交這些文件
git commit -m <Commit message>
或ommit的-m有你喜歡的編輯器彈出,讓您有定義提交信息。

第3步:按這些更改您的回購協議(如果需要)
請記住,如果有更多的人或者電腦推到回購,你應該是最新的本地在此之前,通過做:
git pull origin master
解決可能產生的任何衝突,並推動:
git push origin master
注意,主指定分支推和拉,與您目前可能正在使用的任何其他分支取代它(如果不掌握,這是默認的) 。

0

我會克隆在不同位置的第一臺機器上的git存儲庫,看看它是否以不同的方式執行。

如果是這樣,那麼我會將第一臺計算機上克隆的.git文件夾與計算集羣上的克隆進行比較。

的理由是這樣的:

  • 有關存儲庫的所有信息都包含在git的文件夾中。
  • 給定一個.git文件夾,您可以重新創建整個工作樹。
  • 因此,如果您的git的文件夾是相同的,即創建工作樹也必須是相同的(假設你看看到這兩個文件系統都具有相同的權限和案例sesntivity設置)

如果差異說文件夾是相同的,那麼它不是混帳的錯誤,我會看看構建環境和代碼。

希望這會有所幫助。

相關問題