Как настроить Git, когда я тянуть, чтобы он не создает коммит слияния? - PullRequest
0 голосов
/ 24 августа 2018

У меня есть повтор с файлом A и файлом B ,
В момент времени 0 кто-то изменил файл B и отправил его на удаленный компьютер.
В момент времени 1 я изменяю файл A на своей машине и фиксирую, когда я нажимаю на удаленный источник, git говорит, что мне нужно pull, поэтому я запускаю команду git pull и git pull file B , но он создал слияние, которое, я не считаю необходимым, на случай, если я даже не изменил файл B !

Я искал SO и нашел этот пост git pull создает коммит слияния, даже когда у меня нет локальных изменений
но, к сожалению, мой файл .gitconfig не содержит mergeoptions = --no-ff , так что не так с моим git?

Я попробовал такой же подход с клиентом git-tower, https://www.git -tower.com / windows , но он не создает коммит слияния, я уверен, что git-tower не использует rebase, когда тянуть, потому что когда я нажимаю кнопку тянуть, меня спрашивают, использовать ли ребаз, но я выбрал нет.

Итак, как мне сделать так, чтобы мой мерзавец вел себя так, как я хочу?

1 Ответ

0 голосов
/ 24 августа 2018

Сначала вам нужно сделать свои наблюдения более последовательными.Вы начинаете с предоставления временной шкалы

В момент времени 0 кто-то другой изменил файл B и переместился в удаленный режим.

В момент времени 1 я изменяю файл A на своем компьютере и фиксирую

(выделение добавлено).Затем вы сравниваете свою ситуацию с вопросом «git pull создает коммит слияния , даже если у меня нет локальных изменений » (выделение добавлено).

Конечно, этот ответ к вам не относится;у вас есть локальные изменения.

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

Тогда вы сказали, что клиент git-tower не произвел коммит слияния.Это может произойти по трем причинам.

1) Клиент может быть настроен на перебазирование вместо слияния;но вы сказали, что это не так.

2) Не может быть локальных изменений

3) Не может быть удаленных изменений - что, если вы пытались сделать это сразу после наблюденияpull, который создал слияние, весьма вероятен, поскольку изменения в слиянии больше не являются просто удаленными.

Таким образом, вопрос не в том, что не так с вашей настройкой git;вопрос в том, какие опции у вас есть, если вы не хотите коммитов слияния.

Опущенная мною опция, на которую указывает Трек в комментариях ниже, заключается в использовании более фундаментальных команд.Итак, fetch внесите изменения, а затем интегрируйте их в свой локальный доступ любым удобным для вас способом (merge или rebase и т. Д.).Пока вы не освоитесь с тем, что делают команды, это может быть лучшим вариантом.

(я знаю, что git специально говорит, что вытащить сообщение об ошибке; но pull и (слияние или выборка) будут делать простоа также.)

Другой вариант - использовать rebase.Согласно git docs, это считается потенциально опасным, но это довольно распространенная практика.Если вы понимаете rebase и его значение, это разумный путь.Чтобы сконфигурировать git для использования rebase, вы можете сделать что-то вроде

git config --global pull.rebase true

Другой вариант - использовать локальные ветки, отличные от существующих на удаленном компьютере.(Это может показаться странным, но существуют жизнеспособные рабочие процессы, основанные на этой идее.) В этом случае ваши слияния или перебазировки выбираются явно при интеграции одной ветви в другую, а не принудительно, когда вы неявно интегрируете изменения посредством вытягивания.

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