2012-02-08 2 views
0

同じ入力が与えられた場合、2つの異なるマシンで大きく異なるC++プロジェクトがあります。私はプログラムが両方のマシンで本質的に同じに動作することを期待しています。私はプログラムを書いてきた私のローカルマシン上gitで管理されたC++プロジェクトは、異なるマシン上で同じ入力で異なる動作をします。

git push origin master 

を実行すると、それは(githubの上の)リポジトリが最新であることを私に伝えます。私は、計算クラスタである第二のマシン上で

git clone 

をやって、エラーなしでそこにコードをコンパイルしました。コードはクラスタ上で正常に動作しますが、私のパーソナルコンピュータ上にあるバージョンではなく、古いバージョンのプログラムと同様に動作するようです。私の質問はこれです:githubのバージョンは何とか古くなっている可能性がありますか、またはgithubバージョンのローカルバージョンのコードの同期が途中で邪魔になりましたか?

私はgitに関しては初心者です。前もって感謝します。

編集:これはおそらく、2台のマシンのアーキテクチャにある種の違いがあることがわかりました。どちらもx86_64 Intelプロセッサですが、倍精度とエンディアンのサイズに依存する指数関数への近似は、2番目のマシンでは機能しません。長い話が短いです:これはgitの問題ではありません。

+1

魔法のバグ?定義されていない動作のように聞こえます –

+0

ローカルリポジトリにローカル変更をコミットしたのですか? – Kitsune

+0

はい、私はそれらを託しました。 git statusは変更を報告しません。 – Thucydides411

答えて

0

最後のプッシュ後にレポをクローンしましたか?通常は、クローンを使用してこの時点までのバックストーリーを取得し、その後に "git pull origin master"を使用して更新します(ドキュメントが述べるように、 "git fetch origin"と "git merge origin/master master "と同じですが、どこかで開発して他の場所に配備してpullを使用する単純なケースであれば、マージの仕方についてより具体的にすることができます)。

上記のコメントに記載されているように、ものをプッシュするための手順は以下の通りです:
ステップ1:ファイルを追加します。
git add -i
変更したすべてのファイルを追加してコミットしたい、あるいはあなたが使用することができますします:
git add <filename>は、対話型ツールを使用する代わりに、すべてのファイルに固有です。
ステップ2:これらのファイル
git commit -m <Commit message>
をコミットしたり、お気に入りのエディタは、あなたがそこにコミットメッセージを定義することができるようにポップアップ表示する必要があり-mをOMMIT。

ステップ3:(必要な場合)、あなたのレポにこれらの変更をプッシュし
のレポにプッシュするより多くの人々やコンピュータがある場合は、あなたが行うことで、これを実行する前にローカルで最新のものでなければならないことに注意してください:
git pull origin master
結果として起きる、とプッシュする可能性のある紛争解決:(デフォルトである、習得されていない場合)マスターが押してから引き、あなたが現在使用している可能性のある他のブランチでそれを置き換えるために枝を指定すること
git push origin master
注意を。

0

最初のマシンのgitリポジトリを別の場所にクローンし、最初に別の方法で実行するかどうかを確認します。

もしそうなら、私は計算クラスタ上のクローンを持つ最初のマシンにクローンの.gitフォルダを置き換えます。

根拠はこれです:

  • リポジトリに関するすべての情報は.gitフォルダに含まれています。
  • .gitフォルダを指定すると、作業ツリー全体を再作成できます。あなたの.gitフォルダが同じであれば
  • したがって、作成された作業ツリーも
(ファイル・システムを使用すると、同じ権限とケースsesntivity設定を持つ両方ににチェックアウトすることを想定して)同じにする必要があります

diffがフォルダが同一であるとしたら、gitのフォルトではないので、ビルド環境とコードを調べます。

これが役に立ちます。

関連する問題