#git #path #commit #relative-path #patch
#git #путь #фиксация #относительный путь #исправление
Вопрос:
Скажем, у меня есть репозиторий git ( .git
папка), расположенный ~/my_project/
в. Предположим также, что папка моего проекта собрана таким образом:
my_project
|
|____src
|
|__com
|
|__org
Наконец, предположим, что я хотел бы создать com
папку для фиксации. Я могу сделать это по крайней мере двумя способами:
albus@hogwarts:~/my_project$ git add src/com
albus@hogwarts:~/my_project/src$ git add com
Будет ли какая-либо разница между двумя вызовами? Как насчет git format-patch
или git am
? Зависят ли они от текущего пути?
Люди могут смеяться над моим вопросом, но, по правде говоря, мой коллега сказал, что у них возникли проблемы с применением некоторых исправлений, т. Е. Им Пришлось применять их из разных каталогов в пути проекта. Они также рекомендовали мне выполнять все команды git из самой верхней папки проекта (т. Е. my_project
В этом примере). Я никогда не думал, что в этом может быть правда, но я не эксперт, где git входит в картину, и поэтому я спрашиваю об этом здесь.
Спасибо!
Комментарии:
1. Ну, я только что проверил
format-patch
(вы можете сделать это, чтобы, благодаря децентрализации git, вы могли создавать репозитории в любое время и в любом месте). Он выдает один и тот же результат независимо от того, в каком каталоге вы находитесь, файлы идентичны.2. Да, вы правы, я мог бы попробовать сам, но знания эксперта всегда стоит услышать.
Ответ №1:
git format-patch
создает один и тот же патч везде, где вы запускали команду. Единственное, что меняется, это то, где генерируется файл исправления.
Но разные команды ведут себя по-разному, что также зависит от примененных к ним флагов.
Например, git diff
имеет --relative
флаг:
—относительный [=
<path>
]При запуске из подкаталога проекта можно указать, чтобы исключить изменения за пределами каталога и показать имена путей относительно него с помощью этой опции. Когда вы не находитесь в подкаталоге (например, в голом репозитории), вы можете указать, в какой подкаталог будет выводиться вывод, указав a в качестве аргумента.