Проект c ++, управляемый с помощью git, работает по-разному с одним и тем же вводом на разных машинах - PullRequest
0 голосов
/ 08 февраля 2012

У меня есть проект на c ++, который работает по-разному на двух разных машинах, когда ему дают одинаковый ввод.Я ожидаю, что программа будет работать одинаково на обеих машинах.Когда я запускаю

git push origin master

на своем локальном компьютере, на котором я пишу программу, он говорит мне, что хранилище (на github) обновлено.Я сделал

git clone

на второй машине, которая является вычислительным кластером, и скомпилировал код без ошибок.Код работает на кластере просто отлично, но, похоже, работает аналогично старой версии программы, а не той версии, которая у меня есть на моем персональном компьютере.Мой вопрос заключается в следующем: возможно ли, что версия github устарела или что синхронизация моей локальной версии кода с версией github была испорчена?

Имейте в виду, что я новичок, когда дело доходит до мерзавца.Заранее спасибо.

РЕДАКТИРОВАТЬ: Я обнаружил, что это, вероятно, из-за какого-то различия в архитектуре двух машин.Они оба являются процессорами Intel x86_64, но быстрое приближение к экспоненциальной функции, которая зависит от размера двойных чисел и порядкового номера, не работает на второй машине.Короче говоря: это не проблема с git.

Ответы [ 2 ]

0 голосов
/ 24 марта 2012

Я бы клонировал git-репозиторий на первом компьютере в другом месте и посмотрел, будет ли он сначала работать по-другому.

Если это произойдет, то я разошлю папку .git клона на первой машине с клоном на вычислительном кластере.

Обоснование таково:

  • Вся информация о хранилище содержится в папке .git.
  • Имея папку .git, вы можете заново создать все рабочее дерево.
  • Следовательно, если ваша папка .git одинакова, создаваемое рабочее дерево также должно быть одинаковым (при условии, что файловые системы, для которых вы проверяете оба, имеют одинаковые разрешения и настройки чувствительности регистра)

Если diff говорит, что папки идентичны, то это не ошибка git, и я бы посмотрел на среду сборки и код.

Надеюсь, это поможет.

0 голосов
/ 10 февраля 2012

Клонировали ли вы репо после вашего последнего нажатия?Обычной процедурой обычно является использование clone для получения какой-либо предыстории до этого момента времени, а затем использование «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, чтобы ваш любимый редактор всплыл, чтобы позволитьВам нужно определить сообщение коммита там.

Шаг 3: Вставьте эти изменения в свои репозитории (при необходимости)
Помните, что если естьчем больше людей или компьютеров отправляют репозитории, тем быстрее вы должны быть в курсе событий, выполнив:
git pull origin master
Устраните любые конфликты, которые могут возникнуть, и нажмите:
git push origin master
Обратите внимание, что master указывает ветвь, из которой нужно нажать и вытянуть, замените ее любой другой ветвью, которую вы можете использовать в настоящее время (если не master, что по умолчанию).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...