2670
Комментарий:
|
3088
|
Удаления помечены так. | Добавления помечены так. |
Строка 35: | Строка 35: |
* Дальше `--- a/` отмечает, как файл назывался раньше, а `+++ b/` — как он называется после изменения (например, его ещё и переименовали при этом) * Затем '@@@' описывает, какие строки файла подверглись изменению (какие откуда удалить и какие куда вставить) * После чего показаны изменившиеся части файла в окружении ''неизменившихся''(т. н. контексте). Контекст нужен для того, чтобы была возможность применить ханк, даже если соответствующие строки находятся в другом месте файла, например, если мы хотим накатить свой коммит на файл, в котором кто-то за это время сделал свои изменения. `--- ` означает, что было в старом файле, а `+++ ` — что получилось в новом. |
* Дальше "`--- a/`" отмечает, как файл назывался раньше, а "`+++ b/`" — как он называется после изменения (например, его ещё и переименовали при этом) * Затем "`@@@`" описывает, какие строки файла подверглись изменению (какие откуда удалить и какие куда вставить) * После чего показаны изменившиеся части файла в окружении ''неизменившихся''(т. н. контексте). Контекст нужен для того, чтобы была возможность применить ханк, даже если соответствующие строки находятся в другом месте файла, например, если мы хотим накатить свой коммит на файл, в котором кто-то за это время сделал свои изменения. "`--- `" означает, что было в старом файле, а "`+++ `" — что получилось в новом. |
Строка 40: | Строка 40: |
'''TODO''' | Если сейчас закоммитить все эти изменения, получится один коммит, включающий в себя все три файла. Но предположим, что мы хотим разбить изменения на три коммита (выделение даты в одном файле, подчёркивания в двух и осень в другом). |
Как распилить одно большое изменение на несколько коммитов?
Создадим три файла:
george@inspiron:~/src/gitadd-p> git init george@inspiron:~/src/gitadd-p> cal > month george@inspiron:~/src/gitadd-p> cal -3 > 3months george@inspiron:~/src/gitadd-p> cal -y > year george@inspiron:~/src/gitadd-p> git add . george@inspiron:~/src/gitadd-p> git commit -a -m "Initial" [master (root-commit) 6b5e406] Initial 3 files changed, 50 insertions(+) create mode 100644 3months create mode 100644 month create mode 100644 year
Общий вид:
Отредактируем эти файлы:
month:
3months:
year:
Что покажет git diff:
george@inspiron:~/src/gitadd-p> git diff
В этом diff-е несколько ханков, каждый начинается (воображаемой) командой diff --git, которая сравнивает два (воображаемых) каталога a (предыдущее состояние) b (текущее). А файлы в этих каталогах настоящие.
Дальше "--- a/" отмечает, как файл назывался раньше, а "+++ b/" — как он называется после изменения (например, его ещё и переименовали при этом)
Затем "@@@" описывает, какие строки файла подверглись изменению (какие откуда удалить и какие куда вставить)
После чего показаны изменившиеся части файла в окружении неизменившихся(т. н. контексте). Контекст нужен для того, чтобы была возможность применить ханк, даже если соответствующие строки находятся в другом месте файла, например, если мы хотим накатить свой коммит на файл, в котором кто-то за это время сделал свои изменения. "--- " означает, что было в старом файле, а "+++ " — что получилось в новом.
Вот здесь приложен получившийся патч в текстовом формате.
Если сейчас закоммитить все эти изменения, получится один коммит, включающий в себя все три файла. Но предположим, что мы хотим разбить изменения на три коммита (выделение даты в одном файле, подчёркивания в двух и осень в другом).