В Windows нет понятия «право на выполнение» файла. Из-за этого команда chmod 755 script.sh
не имеет смысла.
Тем не менее, Git даёт возможноть поменять этот флаг для нужного файла.
git update-index --chmod=+x script.sh
В Windows нет понятия «право на выполнение» файла. Из-за этого команда chmod 755 script.sh
не имеет смысла.
Тем не менее, Git даёт возможноть поменять этот флаг для нужного файла.
git update-index --chmod=+x script.sh
Я уже писал о том как получить список комитов, из которого можно сделать текстовый файл с изменениями между двумя ветками.
Если вы придерживаетесь подхода «одна фича — один бранч» и не делаете значимых комитов без веток, то вам подойдёт другой способ:
git branch -r --merged staging | \
grep -v -E `(git branch -r --merged master | \
tr "\n" " " | \
sed -e "s/^ *//" -e "s/ *$//" | \
tr -s " " "|")`
Эта последовательность команд выдаст список веток, которые были объединены в staging, но ещё не попали в master.
Список всех коммитов от указанного объекта до HEAD
можно легко получить с помощью команды
git log 1ff893.. --pretty=format:%s --no-merges > changes.txt
В файл changes.txt
будут записаны только названия комитов, начиная с 1ff893 и до текущего состояния, за исключением точек слияния. В качестве начального объекта можно указать название тега или ветви.
В случае ветвления, обход дерева будет выполнен так, что в отчёт попадут все коммиты, которые не были предками для стартового объекта. Что само по себе достаточно удобно из-за того, что формально они могут быть старше, но объединены гораздо позже.
Если, например, попытаться получить лог от S до F, то в файл буду записаны коммиты с номерами от 1 до 8. Коммиты M — это точки слияния, которые сами по себе не несут никакой новой функциональности, не будут включены в лог.
--reverse
При работе с Git в Windows есть неприятная проблема: если в имени файла неправильно были указаны заглавные и строчные буквы, то после простого переименования файла git status
не покажет изменений. Это связано с тем, что ни FAT32, ни NTFS не учитывает регистр букв.
Если такая ситуация всё же возникла, то переименовать файл можно средствами Git:
git mv filename.txt FileName.txt –f
Ключ -f
как раз нужен для того, чтобы принудительно внести изменения, так как с точки зрения файловой системы эти имена эквивалентны.
Обновление
@mista_k @ _h4_ по-умолчанию именно регистронезависимая. (скриншот из Дисковой утилиты) twitter.com/homm86/status/…
— Александр Карпинский (@homm86) September 5, 2012
Выходит, что разработчики, пользующиеся OS X, так же могут столкнуться с аналогичной ситуацией.
Команду git rebase
обычно применяют тогда, когда хотят избежать точек слияния в ветке, применяя пулл-реквесты, или в процесс работы в одной ветке нескольких человек. Этот классический случай подробно разбирается во многих статьях.
Но, нигде не упоминается об интерактивном режиме и его возможностях. В этом режиме можно переставлять коммиты местами, объединять и разделять их, менять комментарии у произвольного коммита. Всё это может понадобиться, если использовать подход « микрокоммитов ».