Предотвращение локальных изменений в Git


я клонировал репозиторий и master филиал в моем РЕПО отслеживает origin/master. Я создал work филиал и изменил некоторые конфигурационные файлы, относящиеся к моей машине dev, чтобы приложение работало.

мой обычный рабочий процесс будет переключиться на master ветка, объединить изменения, внесенные в work филиала и push эти изменения вверх по течению. Проблема в том, что я не хочу, чтобы мои конкретные chnages толкали. Когда я сливаю мой work филиала в master эти изменения также объединяются.

единственное решение, которое я нашел до сих пор, это не фиксировать эти изменения в work но это не удовлетворительное решение.

4 61

4 ответа:

Если вы хотите предотвратить фиксацию (следовательно, и нажатие) этих локальных файлов конфигурации, вы можете использовать git update-index --предположим-без изменений. Предполагается, что файлы, отмеченные этим флагом, никогда не изменятся (пока вы не сбросите флаг с --no-assume-unchanged)

если файлы еще не отслеживаются, вы можете добавить их в a .gitignore файл в локальный репозиторий, в противном случае вам нужно будет использовать git update-index --assume-unchanged Как сказал Маурисио.

Ниже приведена дополнительная информация .гитюдного файлы:

http://git-scm.com/docs/gitignore

один из способов решить эту проблему-"вишневый выбор" каждого изменения из вашей рабочей ветви в мастер, прежде чем вы нажмете вверх по течению. Я использовал метод, в котором я включаю слово nocommit в сообщение фиксации только для локальных изменений, а затем использую сценарий оболочки примерно так:

#!/bin/sh

BRANCH=`git branch | grep ^\* | cut -d' ' -f2`
if [ $BRANCH != "master" ]; then
  echo ": 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) в главной ветви.

то, что вам нужно, это a .gitignore файл и добавить все ваши конфигурационные файлы внутри .файла.gitignore

после того, как ваш .gitignore file готов вам может понадобиться удалить ваши конфигурационные файлы из кэша

вот команда:

(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