Git Pulling фиксирует сброс в другой машине - PullRequest
0 голосов
/ 07 мая 2018

В моем репо была зафиксирована фиксация A, B, C (последняя версия A), с которой я работаю на своем офисном компьютере и частном компьютере.

Затем я сбрасываю коммит A, B со своего личного компьютера и добавляю новый коммит D. Теперь мой личный компьютер имеет коммиты D, C. Затем я принудительно толкаю их, чтобы в моем удаленном репо также отображались только D, C.

Теперь, когда я извлекаю репо из моего офисного компьютера, он фиксирует D, A, B, C и новый коммит "конфликт слияния", который я должен был сделать при извлечении репо?

Как заставить мой офисный компьютер иметь те же коммиты, что и удаленное репо (т.е. D, C)?

Ответы [ 2 ]

0 голосов
/ 07 мая 2018

Pull (git pull) означает выборку, затем выполните вторую команду, обычно слияние: , то есть git fetch затем git merge. Таким образом, слияние происходит от второй команды Git, которая запускается git pull.

Поскольку вы не хотите слияние, не запускайте git merge. Это означает: не запускать git pull. Поскольку git pull на самом деле просто две команды Git, запустите первую самостоятельно: git fetch.

Затем, получив новый коммит D, вы хотите сделать тот же вид сброса, что и ваш форс-пуш и ваш git reset. В этом случае это означает, что вы захотите запустить:

git reset --hard origin/master

(или любое другое имя удаленного отслеживания origin/, соответствующее вашей текущей ветке). Будьте осторожны с git reset --hard, который стирает любую незавершенную работу, которую вы выполнили: сначала запустите git status, чтобы убедиться, что у вас нет такой работы или вам удобно ее отбрасывать.

(я рекомендую избегать git pull в целом. Если вы делаете хотите git merge после вашего git fetch, запустите его самостоятельно. Но это отдельная проблема.)

0 голосов
/ 07 мая 2018

Пришлось сделать

git reset --hard origin/master

после git pull

...