518
Комментарий:
|
2670
|
Удаления помечены так. | Добавления помечены так. |
Строка 5: | Строка 5: |
george@inspiron:~/src/gitadd-p> git init | |
Строка 8: | Строка 9: |
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 |
|
Строка 14: | Строка 22: |
. {{attachment:monthD.png}} . {{attachment:3montrsD.png}} . {{attachment:yearD.png}} |
* `month`: . {{attachment:monthD.png}} * `3months`: . {{attachment:3montrsD.png}} * `year`: . {{attachment:yearD.png}} Что покажет `git diff`: {{{#!sh george@inspiron:~/src/gitadd-p> git diff }}} . {{attachment:gitdiff.png}} * В этом diff-е несколько ханков, каждый начинается (воображаемой) командой `diff --git`, которая сравнивает два (воображаемых) каталога `a` (предыдущее состояние) `b` (текущее). А файлы в этих каталогах настоящие. * Дальше `--- a/` отмечает, как файл назывался раньше, а `+++ b/` — как он называется после изменения (например, его ещё и переименовали при этом) * Затем '@@@' описывает, какие строки файла подверглись изменению (какие откуда удалить и какие куда вставить) * После чего показаны изменившиеся части файла в окружении ''неизменившихся''(т. н. контексте). Контекст нужен для того, чтобы была возможность применить ханк, даже если соответствующие строки находятся в другом месте файла, например, если мы хотим накатить свой коммит на файл, в котором кто-то за это время сделал свои изменения. `--- ` означает, что было в старом файле, а `+++ ` — что получилось в новом. [[attachment:patch.txt|Вот здесь]] приложен получившийся патч в текстовом формате. |
Как распилить одно большое изменение на несколько коммитов?
Создадим три файла:
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/ — как он называется после изменения (например, его ещё и переименовали при этом)
- Затем '@@@' описывает, какие строки файла подверглись изменению (какие откуда удалить и какие куда вставить)
После чего показаны изменившиеся части файла в окружении неизменившихся(т. н. контексте). Контекст нужен для того, чтобы была возможность применить ханк, даже если соответствующие строки находятся в другом месте файла, например, если мы хотим накатить свой коммит на файл, в котором кто-то за это время сделал свои изменения. --- означает, что было в старом файле, а +++ — что получилось в новом.
Вот здесь приложен получившийся патч в текстовом формате.
TODO