Избегайте автоматического добавления git при извлечении и просмотре изменений - PullRequest
1 голос
/ 07 марта 2020

При извлечении и разрешении конфликтов у меня есть экземпляр, где я могу просмотреть все изменения и зафиксировать разрешение конфликта.

Когда нет конфликтов, я хочу избежать автоматического объединения и просмотреть различия между изменениями, которые я сделал и изменения, которые я вытягиваю перед объединением изменений.

Можно ли просмотреть все изменения (разницу между изменениями, которые я сделал, и тем, что находится в ветке, которую я хочу вытащить), когда нет конфликтов

Ответы [ 2 ]

3 голосов
/ 07 марта 2020

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

Чтобы избежать слияния ...

Вы можете использовать fetch вместо pull. Весь смысл pull в том, чтобы быть ярлыком, который выбирает, а затем выполняет слияние автоматически, поэтому, если вы не хотите слияния, вам не нужно тянуть. Затем вы будете ссылаться на другую ветку, используя вашу ссылку на удаленное отслеживание (например, что-то вроде remotes/origin/other_branch при проверке other_branch).

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

Вы можете посмотреть на «их изменения» по

git diff $(git merge-base remotes/origin/other_branch HEAD) remotes/origin/other_branch

и «наши изменения» по

git diff $(git merge-base remotes/origin/other_branch HEAD) HEAD

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

Что вы можете сделать вместо этого ...

Похоже, вы действительно хотите избежать коммита слияния, не само слияние. (Это больше похоже на то, что происходит в случае конфликта.)

git pull --no-commit

Затем изучите результат и решите, отредактировать его, зафиксировать или выбросить.

Даже это на самом деле не нужно делать каждый раз, потому что объединение (если оно не было выдвинуто) может быть легко отменено. Так что я бы сделал, пусть произойдет слияние. Изучите результат примерно так:

git diff HEAD^

Если вам не нравится результат, вы можете

git reset --hard HEAD^

, а затем, возможно, повторно запустить пул (или просто объединить) с помощью --no-commit опция.

2 голосов
/ 07 марта 2020

Когда нет конфликтов, я хочу избежать автоматического объединения и просмотреть различия между внесенными изменениями и изменениями, которые я извлекаю, до объединения изменений.

Это лучше ( как в более безопасном, более легком и быстром) до git show -m после слияния, которое покажет вам два набора фактически объединенных изменений один за другим. Если вы, как правило, параноик, и этот вопрос показывает, что вы есть, вы все равно захотите сделать это после каждого слияния, чтобы убедиться, что вы не внесли никаких изменений, которые вы не заметили, наряду с git show --cc для проверьте, не обманули ли вы конфликты слияний.

Таким образом, вы проверяете свою фактическую работу.

Если вам не нравится то, что вы видите, как отмечает Марк Адельсбергер, git reset --hard @^, это так просто.

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