У меня есть контрольная касса. Все права доступа к файлам отличаются от того, что Git считает, что они должны быть, поэтому они все отображаются как измененные.
Не касаясь содержимого файлов (просто хочу изменить разрешения), как мне установить права доступа ко всем файлам для того, что Git считает, что они должны быть?
git
file
file-permissions
Дейл Форестер
источник
источник
Ответы:
Git отслеживает разрешение файлов и выставляет изменения разрешений при создании патчей с помощью
git diff -p
. Итак, все, что нам нужно, это:Как однострочник:
Вы также можете добавить его в качестве псевдонима для вашего git config ...
... и вы можете вызвать его через:
Обратите внимание, что если вы используете shell
bash
, убедитесь, что'
вместо"
кавычек используется!git
, в противном случае он будет заменен последнейgit
командой, которую вы выполнили.Спасибо @Mixologic за указание, что при простом использовании
-R
ongit diff
громоздкаяsed
команда больше не требуется.источник
fatal: unrecognized input
Пытаться
git config core.fileMode false
Со
git config
страницы руководства :источник
git checkout origin/master
права доступа к файлу, назначенные серверу , устанавливаются для моей локальной рабочей копии? Потому что всякий раз, когда я собираю V8 для ArangoDB, права доступа к файлам меняются так, что доступ запрещается ко всей папке сборки (даже с повышенными правами; Windows 7+, то есть). Мне нужно исправить все локальные права доступа к файлам, прежде чем я смогу продолжить процесс сборки.core.filemode false
Это тоже можно исправить? Я подозреваю, что git устанавливает права Linux на моем компьютере с Windows. Сценарии сборки могут просто сохранять их и применять те же разрешения для вновь создаваемых файлов ...filemode
наfalse
!Git не хранит права доступа к файлам, кроме исполняемых скриптов. Попробуйте использовать что-то вроде git-cache-meta, чтобы сохранить владение файлом и разрешения.
Git может хранить только два типа режимов: 755 (исполняемый) и 644 (не исполняемый). Если бы ваш файл был 444, git сохранял бы в нем 644.
источник
umask
а также от настроек конфигурации, см. Stackoverflow.com/a/12735291/125150 ....a mode of 100644, which means it’s a normal file. Other options are 100755, which means it’s an executable file; and 120000, which specifies a symbolic link. The mode is taken from normal UNIX modes but is much less flexible — these three modes are the only ones that are valid for files (blobs) in Git (although other modes are used for directories and submodules).
в большинстве случаев будет работать, но если у вас установлены внешние инструменты сравнения, такие как meld, вы должны добавить --no-ext-diff
был необходим в моей ситуации
источник
Вы также можете попробовать крючок «до / после оформления заказа».
Смотрите: Настройка Git - Git Hooks
источник
Я использую Git из Cygwin для Windows,
git apply
решение не работает для меня. Вот мое решение, запуститьchmod
на каждом файле, чтобы сбросить его разрешения.источник
git diff -p
используемый в ответе Мухку может не показать все расхождения.core.filemode
естьfalse
(по умолчанию для MSysGit)Этот код читает метаданные напрямую:
Однострочник непроизводственного класса (полностью заменяет маски):
(Кредит на "$ '\ 0'" идет по адресу http://transnum.blogspot.ru/2008/11/bashs-read-built-in-supports-0-as.html )
источник
Самое простое, что нужно сделать, это просто поменять разрешения обратно. Как заметил @kroger, git отслеживает только исполняемые биты. Так что вам, вероятно, просто нужно запустить,
chmod -x filename
чтобы исправить это (или,+x
если это то, что нужно.источник
git show
: diff --git a / OpenWatch / src / org / ale / openwatch / fb / FBUtils.java b / OpenWatch / src / org / ale / openwatch / fb / FBUtils.java index cd6fa6a..e5b0935 100644 Это немного жирным шрифтом есть файл разрешений.100644
на100755
. Я не думаю, что вы заслуживаете понижения; Git должен быть проголосовал против. Это так сломано во многих отношениях на многих различных уровнях ...etckeeper
Инструмент может обрабатывать разрешения и с:Вы можете использовать его для других папок, чем
/etc
.Установите с помощью диспетчера пакетов или получите ссылки по ссылке выше.
источник