2015-01-05 3 views
2

СценарийИзменение файла после того, как «мерзавец добавить»

Благодаря PHPMD и PHPCS проверок, которые выполняются во время фиксации, я часто нужно модифицировать файлы, которые уже пострадали от «мерзавцем добавить».

Если я изменю добавленный файл и повторю попытку фиксации, изменения не будут распознаны, поэтому фиксация снова завершится.

Затем мне нужно «сбрасывать» файлы, чтобы их не добавлять, а затем «git add» и снова запустите commit.

Вопрос

Есть ли способ, чтобы обновить файлы, которые постановочные для фиксации, без необходимости снимите добавлять и повторно объявление их?

Прошу прощения, если это дубликат. Все мои поисковые запросы показывают только результаты для разных проблем с похожими словами.

+2

Просто «git add» их снова. Вам не нужно их перезагружать. –

+1

Git сам отлично справляется с повторным добавлением файла после прерванного фиксации (я предполагаю, что у вас есть крюк pre-commit, который останавливает фиксацию). Возможно, есть некоторые проблемы с вашим скриптом проверки. – torek

+0

@torek - Вы правы в том, что фиксация прервана, прежде чем она на самом деле ничего не делает. Благодаря! – Alec

ответ

3

Вы только git add файл снова и совершите.

+0

Спасибо. Я действительно не рассматривал это, потому что даже после того, как я выполнил новые изменения, файлы все еще были зелеными (т. Е. Все еще поставлены). – Alec

2

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

Нет необходимости Un-добавлять и повторно добавить их

Просто снова добавить файл

git add file 

После изменения любого добавленного файла, когда вы видите git status -s

MM filename 

поэтому, когда вы снова добавите его, оно станет

git add filename 
git status -s 
M filename 
3

В git файлы (как таковые) не организованы, изменения есть. Поэтому, когда вы делаете git, добавьте имя файла, это текущее состояние этого файла. Если вы измените файл и хотите добавить эти изменения, просто добавьте еще один git.

2

Как уже упоминалось в других ответах, git add должен работать. Тем не менее, я думаю, что у вас уже есть действительная фиксация (которая не проходила некоторый тест), а с другими git add и git commit вы просто добавляете новую фиксацию в свою ветку. Сумасшедший все еще иссякает и терпит неудачу. Здесь есть куча решений. Всего два пример, вступающий в мою голову в тот момент:

git rebase --interactive HEAD~2 

Это дает вам окно редактора, где вы можете осечения ваших два коммитов в один. Просто измените выбор перед вашей второй фиксацией на f или s и сохраните файл.

Другой способ мог бы использовать git commit --amend

Это позволит вам изменить последней фиксации. Тем не менее, я рекомендую прочитать документацию для обоих.

+0

Хороший совет (но читайте руководство). В общем случае, если один или два фиксации являются подходящими, зависит от того, что было вторым изменением; исправление первого или отдельное, чтобы гарантировать его собственное сообщение фиксации. – drRobertz

+0

Хороший материал. Детектор беспорядков и сокращающий код аннулируют фиксацию до ее выполнения, поэтому никакие коммиты фактически не выполняются, и изменения все равно выполняются, когда это происходит. – Alec

+0

А ... ладно. Так что просто использование git add again должно делать магию;) – frlan

Смежные вопросы