Предотвратите локальные изменения, нажав на 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