Имеет ли значение текущий путь для некоторых операций git?

#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 в качестве аргумента.