k001
k001
:...

April 2032
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

k001 [userpic]
git stash

А ещё в новых версиях GIT появилась отличная команда git stash. Это когда у вас есть локальные модификации, которые коммитить ещё рано (или совсем не нужно), а нужен чистый репозиторий. Так вот, обычно я откладывал в сторону эти модификации так:

git diff > my.diff
git diff | patch -p1 -R


А теперь это можно делать так:

git stash

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

Update: ну да, не "в новыз версиях", а несколько раньше. Эта фича появилась в середине 2007 года. Чёрт его знает, почему я про это сейчас пишу. Наверное, потому, что с недавних пор git в некоторых случаях предлагает явно ей воспользоваться.

Tags: , ,
Comments

Эээээ... В новых? А старые для тебя - это какие? :) Фиче сто лет в обед, имхо.

ага. я тоже удивился :-)

> ага. я тоже удивился :-)

+1 :-)

Вы наверное ещё git add --patch не видели ... Ровно как git patch и git reset ...

> Вы наверное ещё git add --patch не видели

Про git add --patch (в виде git add --interactive, что является надмножеством git add --patch) я недавно писал.

> Ровно как git patch

Щито?

[kir@kir ~]$ git patch
git: 'patch' is not a git-command. See 'git --help'.
[kir@kir ~]$ git --version
git version 1.6.0.6

> и git reset ...

git reset я видел, ага :) Надо про это рассказать?

А не кошернее ли будет закомитить локальные изменения в отдельную ветку, поработать над master, а потом сделать rebase?

Это если изменение уже готово. А иногда всё в полуразломанном состоянии и коммитить ещё рано…

Но даже в этом случае потом можно будет несколько коммитов перетосовать и слить в один (git rebase --interactive).

> А не кошернее ли

Вот, прямо мануал (git-stash) цитирую:

       Interrupted workflow
           When you are in the middle of something, your boss comes in and demands that you fix
           something immediately. Traditionally, you would make a commit to a temporary branch to
           store your changes away, and return to your original branch to make the emergency fix,
           like this:

               # ... hack hack hack ...
               $ git checkout -b my_wip
               $ git commit -a -m "WIP"
               $ git checkout master
               $ edit emergency fix
               $ git commit -a -m "Fix in a hurry"
               $ git checkout my_wip
               $ git reset --soft HEAD^
               # ... continue hacking ...

           You can use git-stash to simplify the above, like this:

               # ... hack hack hack ...
               $ git stash
               $ edit emergency fix
               $ git commit -a -m "Fix in a hurry"
               $ git stash pop
               # ... continue hacking ...

Re: > А не кошернее ли

Ай си :)