Предотвратите локальные изменения, нажав на Git
Я клонировал репозиторий, а ветвь master
в моем репо отслеживает origin/master
. Я создал ветку work
и изменил некоторые файлы конфигурации, специфичные для моей машины dev, чтобы приложение работало.
Моим обычным рабочим процессом будет переход на ветвь master
, слияние изменений, сделанных в ветке work
, и push
те изменения вверх по течению. Проблема в том, что я не хочу, чтобы мои конкретные chanages были нажаты. Когда я объединяю ветвь work
в master
, эти изменения также объединяются.
Единственное решение, которое я нашел до сих пор, заключается не в том, чтобы зафиксировать эти изменения в work
, но это не удовлетворительное решение.
Ответы
Ответ 1
Если вы хотите запретить совершать (поэтому также и толкать) эти локальные файлы конфигурации, вы можете использовать git update-index --assume-unchanged. Файлы, помеченные этим флагом, будут считаться неизменными (до тех пор, пока вы не reset с флагом с -no-предположить-без изменений)
Ответ 2
Если файлы уже не отслеживаются, вы можете добавить их в файл .gitignore в локальный репозиторий, иначе вам нужно будет использовать git update-index --assume-unchanged
, как сказал Маурисио.
Ниже приведена дополнительная информация о файлах .gitignore:
http://git-scm.com/docs/gitignore
Ответ 3
Один из способов решения этой проблемы - "переливать вишню" каждое изменение из вашей рабочей ветки в мастер, прежде чем вы будете продвигаться вверх по течению. Я использовал технику, в которой я включаю слово, такое как NOCOMMIT, в сообщение фиксации только для локальных изменений, а затем используйте оболочку script примерно так:
#!/bin/sh
BRANCH=`git branch | grep ^\\* | cut -d' ' -f2`
if [ $BRANCH != "master" ]; then
echo "$0: Current branch is not master"
exit 1
fi
git log --pretty=oneline work...master | grep -v -E '(NOCOMMIT|DEBUG):' | cut -d' ' -f1 | tac | xargs -l git cherry-pick
Эта вишня выбирает каждое изменение, которое не помечено NOCOMMIT (или DEBUG) в ведущую ветвь.
Ответ 4
Вам нужен файл .gitignore и добавьте весь ваш файл конфигурации в файл .gitignore.
Как только ваш файл .gitignore готов, вам может потребоваться удалить ваши файлы конфигурации из кэша
Здесь команда:
(Assume you use linux)
vi .gitignore
//Add all your config file inside
//run the following command to remove your config file from GIT cache if your config files is already track by GIT
git rm --cached myconfig.php