Это вообще возможно?
По сути, есть удаленный репозиторий, из которого я извлекаю, используя просто:
git pull
Теперь я хотел бы просмотреть, что изменится эта тяга (разница), не касаясь чего-либо на моей стороне. Причина в том, что та вещь, которую я вытаскиваю, может не быть «хорошей», и я хочу, чтобы кто-то еще исправил ее, прежде чем сделать мой репозиторий «грязным».
git
version-control
Милан Бабушков
источник
источник
Ответы:
Сделав a
git fetch
, выполните a,git log HEAD..origin/master
чтобы показать записи журнала между вашей последней общей фиксацией и главной веткой источника. Чтобы показать различия, используйте либо,git log -p HEAD..origin/master
чтобы показать каждый патч, илиgit diff HEAD...origin/master
(три точки, а не две), чтобы показать один дифференциал.Обычно нет необходимости отменять выборку, потому что выполнение выборки обновляет только удаленные ветви и ни одну из ваших ветвей. Если вы не готовы выполнить извлечение и объединение всех удаленных коммитов, вы можете использовать их
git cherry-pick
для принятия только тех удаленных коммитов, которые вы хотите. Позже, когда вы будете готовы получить все,git pull
в остальных коммитах слиться будет.Обновление: я не совсем уверен, почему вы хотите избежать использования git fetch. Все, что делает git fetch - это обновляет вашу локальную копию удаленных веток. Эта локальная копия не имеет ничего общего ни с одной из ваших веток, и она не имеет ничего общего с незафиксированными локальными изменениями. Я слышал о людях, которые запускают git fetch на работе cron, потому что это так безопасно. (Я обычно не рекомендую делать это, хотя.)
источник
git diff ...@{u}
так же, какgit diff HEAD...origin/master
если бы origin / master был веткой вверх по течениюЯ думаю, что git fetch - это то, что вы ищете.
Он извлечет изменения и объекты, не фиксируя их в индексе вашего локального репо.
Позже их можно объединить с помощью git merge .
Man Page
Изменить: дальнейшее объяснение
Прямо из Git-SVN Crash Course ссылка
Чтение справочной страницы честно даст вам лучшее понимание вариантов и того, как их использовать.
Я просто пытаюсь сделать это с помощью примеров и памяти, в настоящее время у меня нет коробки для тестирования. Вы должны посмотреть на:
Выборка может быть отменена с помощью git reset --hard ( ссылка ), однако все незафиксированные изменения в вашем дереве будут потеряны, а также изменения, которые вы получили.
источник
git reset --soft
или--mixed
? Проверьте справочную страницу.Вы можете извлечь из удаленного репо, увидеть различия, а затем вытащить или объединить.
Это пример для удаленного репо
origin
и ветки, которая называетсяmaster
отслеживанием удаленного филиалаorigin/master
:источник
Я создал собственный псевдоним git, чтобы сделать это для меня:
с этим вы можете сделать это:
Это даст вам хороший и простой способ предварительного просмотра изменений перед выполнением
merge
.источник
Я использую эти две команды и вижу файлы для изменения.
Сначала выполняя git fetch , он выдает следующий результат (часть вывода):
Эта операция дает нам два идентификатора фиксации, первый - старый, а второй - новый.
Затем сравните эти два коммита, используя git diff
Эта команда выведет список файлов, которые будут обновлены:
Например, app / controller / xxxx.php и app / view / yyyy.php будут обновлены.
Сравнение двух коммитов с использованием git diff печатает все обновленные файлы с измененными строками, но с помощью grep он ищет и получает только строки, содержащие diff --git из вывода.
источник
Возможно, я опаздываю на вечеринку, но это то, что беспокоило меня слишком долго. По своему опыту я бы предпочел увидеть, какие изменения ожидают рассмотрения, чем обновить мою рабочую копию и разобраться с этими изменениями.
Это идет в
~/.gitconfig
файле:Он выбирает текущую ветвь, затем выполняет различие между рабочей копией и этой извлеченной ветвью. Таким образом, вы должны видеть только изменения, которые придут с
git pull
.источник
HEAD..@{u}
? Это проще, и не требует, чтобы удаленное имя называлось «origin» или чтобы ваша ветвь называлась так же, как и на удаленном.git pull
если вам не нравится то, что он делает ... поэтому я не уверен, каков вариант использования для этого.git pull
потом. Кроме того, я думаю, о чем был вопрос опа.Если вы не хотите, чтобы git-fetch обновлял ваш локальный .git, просто скопируйте ваше локальное хранилище в временный каталог и сделайте там попытку. Вот короткая рука:
Напр .:
источник
Как насчет клонирования репозитория в другом месте и выполнения git log как на реальной кассе, так и на свежем клоне, чтобы увидеть, получили ли вы то же самое?
источник