Differences between revisions 3 and 4
Revision 3 as of 2019-03-29 06:08:57
Size: 518
Editor: FrBrGeorge
Comment:
Revision 4 as of 2019-03-29 09:01:33
Size: 2670
Editor: FrBrGeorge
Comment:
Deletions are marked like this. Additions are marked like this.
Line 5: Line 5:
george@inspiron:~/src/gitadd-p> git init
Line 8: Line 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
Line 14: Line 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

Общий вид:

  • 3files.png

Отредактируем эти файлы:

  • month:

    • monthD.png

  • 3months:

    • 3montrsD.png

  • year:

    • yearD.png

Что покажет git diff:

george@inspiron:~/src/gitadd-p> git diff
  • gitdiff.png

  • В этом diff-е несколько ханков, каждый начинается (воображаемой) командой diff --git, которая сравнивает два (воображаемых) каталога a (предыдущее состояние) b (текущее). А файлы в этих каталогах настоящие.

  • Дальше --- a/ отмечает, как файл назывался раньше, а +++ b/ — как он называется после изменения (например, его ещё и переименовали при этом)

  • Затем '@@@' описывает, какие строки файла подверглись изменению (какие откуда удалить и какие куда вставить)
  • После чего показаны изменившиеся части файла в окружении неизменившихся(т. н. контексте). Контекст нужен для того, чтобы была возможность применить ханк, даже если соответствующие строки находятся в другом месте файла, например, если мы хотим накатить свой коммит на файл, в котором кто-то за это время сделал свои изменения. ---  означает, что было в старом файле, а +++  — что получилось в новом.

Вот здесь приложен получившийся патч в текстовом формате.

TODO

FrBrGeorge/Using git add -p (last edited 2019-03-29 10:10:58 by FrBrGeorge)