Есть ли в git функция, с помощью которой я мог бы сравнить свои локальные файлы с исходным элементом управления git до фиксации изменений?
Git Сравнить файлы перед фиксацией
Ответы (4)
Конечно можно.
Использование
git diff
command без каких-либо аргументов: будет сравнивать каждый измененный файл в вашей файловой системе с файлами в теге текущей извлеченной ветви (или).Использование
git diff <tag(or)branch name>
: будет сравнивать каждый измененный файл в вашей файловой системе с файлами в указанном теге ветки (или).Использование
git diff <path/to/file_name (or) path/to/folder>
: сравнит указанный файл или файлы в папке в вашей файловой системе с тегом текущей извлеченной ветви (или).Использование
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
.
Я люблю использовать
git status
Он покажет вам, какие файлы были изменены и что вы отслеживаете. Затем вы можете использовать
git diff
или более дружественный к графическому интерфейсу
gitk
Чтобы увидеть разницу.
Я предпочитаю использовать этот метод.
Скрипт для сравнения
#!/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. С его помощью вы можете просмотреть свои изменения перед фиксацией. Я надеюсь, что это то, что ты хочешь.
git diff <branch_you_want_to_compare>
?
- person kostix; 12.06.2012
Поскольку коммиты легко исправить / изменить до того, как они будут отправлены, мне легче сделать коммит, а затем посмотреть в журнале, что я изменил.
Если это не то, что я ожидаю, исправьте, сбросьте, переустановите -i и т. Д.