2016-09-09 8 views
1

Я работаю над проектом с использованием Git. Время от времени я нахожусь в желании сохранить свои изменения, не комментируя их, как резервную копию, а затем продолжаю работать. То, что я обычно делаю, это git stash, а затем сразу git stash apply, чтобы вернуть код в том же состоянии, что и перед списанием. Проблема, с которой я сталкиваюсь, заключается в том, что git stash возвращает мою рабочую директорию, поэтому, хотя я сразу же применяю stash файлы и проекты должны быть перестроены, потому что они, похоже, изменились. Это довольно раздражает, потому что некоторые из наших проектов занимают много времени для создания.изменения git-stash без возврата

Итак, мой вопрос в том, есть ли способ сменить мои изменения без возврата? Если stash не делает этого, есть ли другая команда в git, которая может это сделать? Спасибо.

+1

В качестве альтернативы вы также можете «git add» внести изменения и просто не зафиксировать их. Это помещает измененные файлы в промежуточную область. Чтобы вернуться к поэтапной версии, используйте 'git checkout - '. – Phillip

+0

@Phillip Я дам ему попробовать, спасибо! – opetroch

+1

Не существует идеального решения. То, что я обычно делаю в таких случаях, это просто пойти вперед и сделать много коммитов, а затем проглотить их позже. (Обычно это означает также создание новой ветви - в конце концов я получаю * много * ветвей :-).) – torek

ответ

1

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

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

Типичный рабочий процесс, как так:

vim myfile # make some changes 
git add myfile 
git commit -m "temp changes 1" 
vim myfile # make more changes 
git commit --amend 
git diff HEAD~1 # See the changes you've made compared to last HEAD. 

Недостатком с этим является то, что ваши «локальные изменения» не revisioned.

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

Это будет выглядеть примерно так:

vim myfile2 # make changes 
git add myfile2 
git commit -m "temp changes dated X" 
vim myfile2 # more changes 
git add myfile2 
git commit -m "temp changes dated Y" 

Тогда просто сделать что-то вроде этого, перед отправкой их.

git rebase -i HEAD~N # Where N is the number of local commits you made 
# Squash them, by changing 'pick' to 'squash' in your editor. 
# Send them away 
git push origin dev 
+0

Кажется, я не делаю то, что хотел. Мои локальные файлы все еще вернулись. – opetroch

+0

Я думаю, что вы неправильно поняли вопрос OP. Его проблема заключается в том, что 'git stash' /' git apply 'изменяет mtime файлов, а не отменяет изменения, которые уже были добавлены в индекс. – Phillip

+0

Я думаю, что правильно понял его вопрос, что я не знал, так это то, что 'git stash save --keep index' все еще модифицировал' c/mtime'. – ffledgling

Смежные вопросы