Git Сравнить файлы перед фиксацией

Есть ли в git функция, с помощью которой я мог бы сравнить свои локальные файлы с исходным элементом управления git до фиксации изменений?


person mallows98    schedule 11.06.2012    source источник
comment
Вы пытаетесь сравнить свой локальный репозиторий git с удаленным репозиторием github?   -  person    schedule 12.06.2012
comment
Да, похоже на VS.NET TFS, где вы можете сравнить все измененные файлы перед их проверкой.   -  person mallows98    schedule 15.06.2012
comment
возможный дубликат Git: как просмотреть разницу в файлах перед фиксацией   -  person kenorb    schedule 10.03.2015


Ответы (4)


Конечно можно.

  1. Использование git diffcommand без каких-либо аргументов: будет сравнивать каждый измененный файл в вашей файловой системе с файлами в теге текущей извлеченной ветви (или).

  2. Использование git diff <tag(or)branch name>: будет сравнивать каждый измененный файл в вашей файловой системе с файлами в указанном теге ветки (или).

  3. Использование git diff <path/to/file_name (or) path/to/folder>: сравнит указанный файл или файлы в папке в вашей файловой системе с тегом текущей извлеченной ветви (или).

  4. Использование git diff <tag1(or)branch1 name> <tag2(or)branch2 name>: сравнивает все измененные файлы между двумя ветвями / тегами.

Есть много параметров, которые вы можете передать команде 'git diff' для форматирования вывода. Здесь я перечислил несколько:

  • git diff --name-only: показывать только имена измененных файлов, но не их содержимое.
  • git diff --name-status: Показывать только имена и статус измененных файлов.
  • git diff --cached (or --staged): сравнивает только файлы, которые размещены / проиндексированы.

для получения дополнительной информации: выполните git diff --help в своем git bash.

К вашему сведению: git diff будет генерировать вывод в командной строке. Если вы хотите увидеть результат в некоторых визуальных инструментах, используйте git difftool.

Используя git difftool: вы можете настроить git для использования инструмента сравнения / слияния для сравнения файлов. Ознакомьтесь с этой ссылкой: используйте Winmerge внутри Git для создания файлов различий

Вы также можете передать git diff все аргументы и параметры git difftool.

person Karthik Bose    schedule 12.06.2012
comment
Есть ли способ сделать то же самое на Github? - person Jean; 29.05.2021

Я люблю использовать

git status

Он покажет вам, какие файлы были изменены и что вы отслеживаете. Затем вы можете использовать

git diff

или более дружественный к графическому интерфейсу

gitk

Чтобы увидеть разницу.

person Frank Sposaro    schedule 11.06.2012
comment
Также, если вы хотите проверить, что было поставлено (в индексе), вы можете использовать git diff --cached. - person Russell; 12.06.2012

Я предпочитаю использовать этот метод.

Скрипт для сравнения

    #!/bin/sh
(                              # execute in a subshell so you can continue
                               #   working in the current shell
    set -o xtrace              # bash setting that echos each command before it's executed
    > /tmp/auto_bcompare_log   # truncate existing log file
    BCOMP_PATH=/usr/bin/bcompare
    BRANCH="$1"                # get branch argument from command line
    TEMPDIR=`mktemp -d`        # get a temp directory
    CWD=`pwd`                  # remember the current directory
    git clone $CWD $TEMPDIR
    cd $TEMPDIR
    git checkout $BRANCH
    cd $CWD
    $BCOMP_PATH $CWD $TEMPDIR
    rm -rf $TEMPDIR
) >> /tmp/auto_bcompare_log 2>&1 < /dev/null & # background and redirect
                                               # stdout/stderr/stdin

Приведенный выше сценарий определенно _не_ написан мной. Взял из сети, но в источниках не уверен. Сохраните это в своем репо как compare.sh. Убедитесь, что вы указали правильный путь для файла bcompare.

Для сравнения перед фиксацией.

./compare.sh <branch_you_want_to_compare>

По сути, этот скрипт проверяет ветку, которую вы указываете в качестве параметра для временного каталога, и открывает для сравнения с вашим pwd. С его помощью вы можете просмотреть свои изменения перед фиксацией. Я надеюсь, что это то, что ты хочешь.

person positron    schedule 12.06.2012
comment
Эм-м-м. Чем это отличается от git diff <branch_you_want_to_compare>? - person kostix; 12.06.2012
comment
kostix: Он просто предоставит вам единый формат сравнения. Не чистое сравнение, как то, что делает вне сравнения. - person positron; 13.06.2012

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

Если это не то, что я ожидаю, исправьте, сбросьте, переустановите -i и т. Д.

person ptyx    schedule 11.06.2012