четверг, 11 июня 2009 г.

Git: объясните тупому?! :(

Кропаю тут небольшую программку, попутно решил разобраться таки с git-ом. Так что дальше могут не читать те, кто не знает что это и для чего это надо. ;)


В общем сделал на одной машине (A) репозитарий:

cd prog
git init

Добавил файлы, поредактировал, потестил, добавил в репозитарий:

git add prog.py

Ну и закомитил:

git commit -a

На другой машине (B) сделал клон этого репа:

git clone bla-bla-bla/prog
cd prog

Все хорошо. Теперь могу тут делать что-то. Поправил файлы, сделал папку data и добавил туда файлы. Ну и добавляю все это в реп:

git add data
git commit -m "напихал еще файлов"

Теперь выталкиваю это все на машину A:

git push

На машине A смотрю:

git log

и вижу, что мой последний коммит тут есть. Все хорошо. Но! Нет самой папки data и ее содержимого. :( Если сделать:

git checkout

То он пишет, что удаляет эту папку вместе с файлами и в репе появляется коммит с удалением.
Вопрос: или я чего то не понимаю? Как мне получить на машине A нормальные актуальные данны, в git-е то они есть! В общем объясните дураку, что я делаю не так. :)

P.S. Доки по git-у читал, статьи - тоже. Не помогло. :( Все равно до конца не понимаю что к чему.

2 комментария:

  1. репозиторий git — это информация, хранящаяся в каталоге ".git".
    то, что вы видите по команде ls — это ваш working tree, клон репозитория.
    посмотрите git-status. вы увидите, что ваши «изменения» состоят в удалении каталога data.
    закоммитьте другие изменения (если они были) и откатите это псевдо-удаление: например, с помощью git-reset --hard (кошерность именно такой операции не гарантирую — я не спец по git-у).

    ОтветитьУдалить
  2. Да, по поводу .git и working tree я понимаю. Интересно было именно как это правильно делается. Вот этого я как-то и не догоняю. :) Но за совет спасибо, будем дальше читать/думать.

    ОтветитьУдалить