Как проводить различие перед каждым коммитом, не переходя в интерактивный режим?

Допустим, вы выполняете команду git status и получаете список файлов, которые хотите проверить один за другим, а затем фиксируете их один за другим.

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

Это вроде того, для чего предназначен git add -i. Это интерактивный режим git add, который позволяет вам работать файл за файлом и фрагмент за фрагментом, показывая вам разницу на каждом этапе.

Purag 21.08.2018 03:04
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
1
89
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

ОБНОВЛЕНИЕ 2020:

Поработав, я решил установить и использовать ydiff.

При выполнении ydiff -s в терминале рядом отображается различие.

Нетрудно проверить это здесь и не возражать против моего старого ответа:

https://github.com/ymattw/ydiff


[ СТАРЫЙ ]

Git diff перед фиксацией?

Простое решение нестандартного мышления:

Вставьте это в свой .bashrc или .zshrc:

gdiffy() { git diff $1 && git add $1 && git commit $1; }

Сначала он откроет различие, когда вы его закроете, он позволит вам ввести сообщение фиксации.

пример использования:

gdiffy config/database.yml

или

gdiffy .

Если вы находитесь в среде графического интерфейса. "git gui" можно запустить с консоли .. Это запустит окно, в котором левая панель будет содержать список измененных файлов. Выбрав любой из них, вы увидите разницу. Вы можете добавить файлы, щелкнув значок слева от имени файла, а затем зафиксировать его из того же окна.

Надеюсь, поможет.

Примечание: diff + commit не будет работать, потому что у вас нет ничего добавлен в индексе.

Как уже отмечалось, git add -i или git add -p (--patch) предоставит вам представление различий с возможностью добавления или пропуска каждого фрагмента различий. Затем вы можете зафиксировать измененный индекс.

Правда без "добавления" не работает! я добавил "добавить" прямо сейчас! это просто быстрый взлом!

Khalil Gharbaoui 23.08.2018 00:53

Другие вопросы по теме