Как вы говорите git, чтобы хранить индекс только? - PullRequest
57 голосов
/ 12 марта 2011

Я только что использовал "git add -p", чтобы добавить кучу изменений в индекс, и я только что понял, что пропустил изменение, которое должно было войти в предыдущий коммит.

Я могуне выполняйте --amend сейчас, потому что я добавил все эти новые изменения в индекс, и я не хочу использовать «git reset», чтобы удалить их все из индекса, так как их добавление займет много времениснова.

Что мне нужно, это что-то вроде 'git stash', который будет только хранить индекс - он должен оставить рабочие файлы в покое.Затем я могу спрятать индекс, добавить отсутствующее изменение, зафиксировать его, затем вытолкнуть тайник и вернуть мой индекс в прежнее состояние.

Не похоже, что 'git stash' может это сделать, но я что-то упустил?Спасибо!

Ответы [ 11 ]

0 голосов
/ 14 мая 2019

Если вы добавляете файлы, готовые к фиксации в индекс, но хотите stage только их, вы можете использовать функцию ниже.

>> momomo.com.git.stash.added

или

>> momomo.com.git.stash.added "name of the  stash"

Функция Bash:

momomo.com.git.stash.added() {
    local name="$1";

    if [[ "${name}" == "" ]]; then
        name="$(date)"
    fi

    # This will stash everything, but let the added ones remain
    # stash@{1} 
    git stash --keep-index

    # This will stash only the remaining ones
    # @stash@{0}
    git stash save "${name}"

    # Restore everything by applying the first push stash which is now at index 1
    git stash apply stash@{1}

    # Then drop it
    git stash drop stash@{1}

    # At the top of the stash should now be only the originally indexed files
}

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

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