Добавить только непробельного изменения
У меня есть текстовый редактор, чтобы автоматически обрезать конечные пробелы при сохранении файла, и я вклад в проект с открытым исходным кодом, который имеет серьезные проблемы с пробела.
Каждый раз, когда я пытаюсь представить патч я должен сначала пропустить все пробельные символы-меняется только вручную, выбирать только необходимую информацию. Не только это, но когда я выполните Git для перебазирования
я обычно столкнуться с рядом проблем из-за них.
Как таковой, я хотел бы уметь добавлять в индекс только непробельного изменения, так же, что в Git добавить -п
, но без того, чтобы забрать все изменения сам.
Кто-нибудь знает, как это сделать?
Редактировать: я не изменить способ проектных работ, и они решили, после обсуждения в списке рассылки, чтобы не замечать этого.
Решение @Фрю было'т достаточно, что мне нужно, так это псевдоним, который я сделал для таже проблема:
Или вы можете просто запустить:
Обновление##
Добавлены опции
-Ц0
, и--unidiff-ноль
соответственно, чтобы обойти контексте согласования вопросов, по данным этот комментарий.В основном она применяет патч, который будет применяться с
Добавить
без пробелов изменения. Вы заметите, что послеГИТ addnw файла/
по-прежнему будет неиндексированных изменений, это'ы на пробелы слева.... Нет-цвет не'т необходимости, но так как у меня цветов всегда, я должен использовать его. В любом случае, лучше перебдеть, чем недобдеть.
Это работает для меня:
Если вы хотите держать заначку вокруг, это работает
Я не'т, как в тайниках, но я ** наткнетесь на баг в Git + с Cygwin, где я теряю изменений, поэтому убедитесь, что у reflog, по крайней мере, я установила следующее:
В основном мы создаем дифф, что не'т включать изменения пространства, отмените все наши изменения, и затем применить дифф.
Создать патч-файл, содержащий только реальные изменения (за исключением строк с пробелами изменения), затем очистите ваше рабочее пространство и применить этот патч:
Комментарий остальные различия, затем
добавить
иобязательства
, как обычно.Эквивалент для Mercurial-это для этого:
Добавьте следующие строки в ваш
.gitconfig хранит настройки
:Благодаря @Колин Герберт'ы ответ для вдохновения.
Синтаксис Объяснение
Финал
#
должны быть в кавычках, так это's не рассматривал его в качестве комментария внутри.gitconfig хранит настройки, но вместо этого передается и обрабатывается как комментарий внутри оболочки - она вставляется между концом
ГИТ применяются и передаваемых аргументов, чтоГИТ
автоматически помещает в конец командной строки. Эти аргументы не'т хотела, здесь - мы не'т хотите,ГИТ применить
, чтобы потреблять их, следовательно, предшествующим комментарием характер. Вы можете запустить эту команду какGIT_TRACE=1 ЗПР ГИТ
, чтобы увидеть это в действии.В
--
сигналы заканчиваются аргументы и позволяет для случае, если у вас есть файл с именем-з
или что-то, что выглядело бы как переключиться нагит дифф
.Бежал двойные кавычки вокруг
$@
требуется сохранять предоставленные пользователем, цитируют Аргументы. Если в"
символ не избежал, он будет поглощен `.парсер gitconfig хранит настройки и не достигнет оболочки.Примечание:
.gitconfig хранит настройки псевдонимов разбора не'т признают одиночные кавычки, как что-то особенное - его только специальные символы в
",
`,\N
и;
(за"
в кавычки). Вот почему в"
всегда должны быть экранированы, даже если это выглядит как это's внутри одиночной кавычки (что Git-это совершенно агностик о).Это важно, например. если у вас есть удобный псевдоним для выполнения команды
баш
в рабочем дереве'корней. Неправильные формулировки:В то время как правильным является:
Топ-проголосовали ответ не работает во всех случаях из-за пробелов в контексте патч по пользователям в комментариях.
Я пересмотрела команду следующим образом:
Это создает патч без контекста. Должны'т быть проблемой, так как патч является кратковременным.
Соответствующий псевдоним, опять пересмотр того, что уже были предоставлены другими пользователями:
Как о следующем:
Команды внутри backquotes получает имена файлов, которые имеют непробельного изменения.
Я нашел ГИТ пре-коммит Хук, который удаляет конечные пробелы. Однако, если вы можете'т получить другие, чтобы использовать это, то он не может быть допустимым решением.
Вы должны сначала рассмотреть, если пробельный является намеренным. Многие проекты, в том числе ядро Linux, например, друпал, и Kerberos (подборка из страницы Википедии по стилю) запретить пробелы. Из документации ядра Linux:
В вашем случае, проблема наоборот: предыдущие коммиты (а может и нынешние) не следуют этому правилу.
Я'д пари, что никто не хочет, чтобы пробелы, и решение данной проблемы может быть долгожданное изменение. Другие пользователи также могут столкнуться с той же проблемой вы. Это's также вероятно, что партнеру (- ам), которые размещают пробельный не знают, что они делают так.
Вместо того, чтобы заново настроить Git, чтобы игнорировать эту проблему, или отключить, в противном случае желательной функциональности в ваш редактор, Я'д начните с поста в список рассылки проекта с описанием проблемы. Многие редакторы (и Git сам) может быть настроен, чтобы справиться с пробела.