Git Сохранение определенных файлов перед фиксацией - PullRequest
4 голосов
/ 07 декабря 2010

Я не уверен, что то, что я ищу, это git-stash, но вот что я хочу сделать.

У меня есть файлы конфигурации, настроенные для локального использования. Эти файлы уже существуют в Git. Теперь, если я добавлю новую функцию (изменим другие файлы), я захочу спрятать свою конфигурацию и нажать коммит, а затем зафиксировать только файлы, связанные с моей новой функцией.

Если я использую git-stash, он все прячет. Как я могу сохранить мои файлы конфигурации (только)?

Спасибо

Ответы [ 4 ]

7 голосов
/ 07 декабря 2010

Две вещи.

  1. Вы должны ставить только те файлы, которые хотите использовать для фиксации. Это делается с помощью git add. Даже если у вас есть куча изменений, вы можете ставить только те поля (и фрагменты файлов, используя git add -p), которые вы хотите зафиксировать, используя git add. Вы должны делать это.

  2. Если ваш файл конфигурации не является неотъемлемой частью вашего приложения (а вы хотите контролировать его версию), вы должны ignore управлять, а не управлять им даже версией.

3 голосов
/ 07 декабря 2010

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

2 голосов
/ 07 декабря 2010

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

Вы, вероятно, даже не должны проверять файлы конфигурации, а если вы это делаете, вы должны поместить их в ветку, которую вы объединяете только в локальной системе.

0 голосов
/ 16 декабря 2016

Уже поздно, но я нашел лучшее решение (несколько лет назад).

Использование git-accept-status и git-unassume-status

#!/usr/bin/env ruby

# used to ignore modified files -- e.g configuration files

ret=%x{git status --porcelain}
files=ret.lines.map { |x| x.split[1] }

files.each do |file|
  # makes files resistant to git reset hard
  %x{git update-index --skip-worktree #{file}}
  %x{git update-index --assume-unchanged #{file}}
end

и для git-unassume

#!/usr/bin/env bash

# used to ignore modified files -- e.g configuration files

cd .git
rm index
cd ..
git reset

Таким образом, вы можете изменять файлы конфигурации, но игнорировать их при помощи состояния и других команд git add. Если вы передумаете, вы запустите git-unassume

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