GIT и пуш с игнорируемыми файлами - PullRequest
4 голосов
/ 06 января 2011

Какова точная процедура, которой вы должны следовать, используя git?Я приведу свою процедуру (которая, так или иначе, работает не очень гладко):

- cloned a repository: (works fine)
- added settings files to .gitignore to prevent overwriting the originial 
    settingfiles on the remote (= test environment)
- made changes to my local repository and committed it locally (works fine)
- pushed it from local to remote (did not work properly)

При нажатии на удаленный файл файлы настроек на удаленном устройстве удаляются, что привело к смерти моей тестовой среды.Я просто хочу, чтобы файлы настроек игнорировались, если я нажимаю, а не удаляю.

Что я сделал не так / забыл?Есть идеи?

Ответы [ 3 ]

3 голосов
/ 08 января 2011

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

, чтобы удалить файл из истории и убедиться, что в будущем он игнорируется, вам следует

  • добавьте его к .gitignore (как вы уже сделали)
  • run git filter-branch --index-filter 'git rm --cached --ignore-unmatch settingsfile' HEAD

, отметьте, что вам нужно запустить приведенную выше команду для каждой из ветвей, гдефайл присутствует.

, тогда вам нужно git push -f origin master (если master - имя ветви, а origin имя удаленного)

, на который вы можете сослаться это руководство для получения дополнительной информации.

Кроме того, как сказал Рафид К. Абдулла, вы ничего не удалили (если вы следовали рабочему процессу, который вы описали в своем посте);Вы только что добавили модификации, которые вы можете легко отменить.это то, для чего все-таки мерзавец:)

2 голосов
/ 06 января 2011

Я понимаю, что файл настроек, о котором вы говорите, это ваши настройки, а не папка .git.Если я правильно понял, то это не всегда помогает добавить их в .gitignore, потому что все, что делает .gitignore - это то, что он не проверяет эти файлы локально, когда вы используете 'git commit -a', 'git diff'и т. д., но если они уже есть в локальном хранилище, они все равно будут отправлены на удаленный сервер.

Сказав это, я не думаю, что вы потеряли файл настроек на удаленном сервере.потому что все, что вы сделали, это добавили больше коммитов, поэтому вы должны найти файл настроек в истории.

В любом случае, к сожалению, в отличие от SVN, если вы просто научитесь использовать GIT всего за несколько шагов, вы всегда будете делать ошибки.Сначала я допустил МНОГИЕ ошибки, а затем признался, что должен прочитать об этом книгу.Но сначала я хотел понять его концепцию, потому что именно это иногда создает проблемы (например, в чем разница между «master master» и «origin / master» и т. Д.), Поэтому я нашел эту очень полезную страницу и рекомендую вампрочитайте это:

http://www.eecs.harvard.edu/~cduan/technical/git/

И я также нашел эту очень интересную книгу:

http://progit.org/book/

Вам не нужно читать еевсе, просто прочитайте основы и, самое главное, разветвление.

Надеюсь, это поможет.

0 голосов
/ 06 января 2011

Не добавляйте файл настроек в .gitignore файл, вместо этого сохраните ваши изменения в файле настроек с помощью git stash делайте push & pull как обычно.Когда закончите, восстановите файл настроек с помощью git stash apply.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...