2016-04-06 7 views
1

Я работал над несколькими довольно маленькими проектами в git, но часто обнаружил, что мне слишком ленив, чтобы беспокоиться о том, чтобы делать все это время, когда я делаю много небольших дополнительных изменений. Поэтому, когда я поворачиваюсь и хочу выяснить, когда работал мой код в последний раз, я понимаю, что я не сохранил фиксацию. Мне было интересно: есть ли способ заставить git регистрировать фиксацию каждый раз, когда я сохраняю один из моих файлов для меня? Мне не нужны сообщения о фиксации; Я просто хочу, чтобы мои изменения регистрировались.
Я столкнулся с git stashing, когда я задал этот вопрос; это уменьшает объем работы, которую я должен выполнить, но она не устраняет ее.
Любые предложения были бы высоко оценены!Может ли git непрерывно фиксировать изменения, внесенные в файл?

+0

Просто для вашего понимания того, что такое git: git не может ничего делать автоматически, так как это не программа, работающая в фоновом режиме. git - это набор скриптов, которые запускаются только тогда, когда вы делаете git в командной строке или когда стороннее приложение использует git. Итак, простой ответ: git определенно не может, но может быть, что-то другое (используя git) может. – Peter

ответ

4

Git не Autocommit, но вы можете создать небольшой скрипт, чтобы сделать это для вас, если вы хотите:

while sleep 60; do git commit -m 'Working'; done 

Это Autocommit с сообщением «Работа» каждые 60 секунд. Есть также много инструментов, таких как Guard, которые будут смотреть файловую систему и выполнить что-то на сохранение, как вы хотите, но я не беспокоюсь о деталях, потому что ...


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

Действительно, вы хотите создать привычку совершать небольшие последовательные изменения. Они позволяют вернуться к предыдущему состоянию, но также действуют как сухарики, описывающие ваш мыслительный процесс как для вашего будущего, так и для любого, с кем вы могли бы работать. Если вы напишете good commit message с каждым, еще лучше.

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

Вы начнете замечать, что не только ваша проблема может быть разложена на хорошие коммиты, но части ее фактически полностью независимы. Они могут быть помещены в разные ветви, позволяя вам переключаться между ними, как вам нравится или нужно, и объединять их позже в master или друг с другом. Это особенно полезно для тех, кто просматривает ваш код, так как они могут читать функции A и B и ошибки C по одному за раз, а не в одном мегазвезде.

Получите себе таймер и уберите его каждые 5 минут (выберите период, который будет полезен часто, не прерывая ваш ход мысли слишком часто). Всякий раз, когда это происходит, спросите себя, выполнили ли вы шаг в своей задаче и зафиксируете ее. Так как на самом деле вы, вероятно, будете на полпути через что-то еще, ознакомьтесь с git add --patch, чтобы вы могли выполнить разделы, которые были закончены, и продолжать работать над теми частями, которые этого не делают. Чем больше вы учитесь и используете Git, тем эффективнее вы будете, и тем меньше времени вы потратите на прокрутку потока минутных изменений.

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