мерзавец и локальные модификации - PullRequest
3 голосов
/ 09 июня 2010

Я открываю для себя, как использовать git.

Я только что сделал следующий тест:

  1. создать папку и 2 файла
  2. затем git init, git add., Git commit -m "initial commit"
  3. создать ветку: git ветка экспериментальная, git checkout экспериментальная
  4. затем измените имя папки и удалите один из файлов, затем git add., Git commit -m "экспериментальный"
  5. вернуться к мастеру: мастер проверки git

    Сюрприз: я не нахожу мастера, как я его оставил; папка исчезла. И мне нужно выполнить git -reset --hard, чтобы найти мою папку.

    Интересно, сделал ли я что-то не так или не понял, как git управляет локальными изменениями. Спасибо за вашу помощь.

Детальный сценарий:

mkdir GitTest
cd GitTest/
mkdir Folder1
echo "master" > Folder1/File1.txt
echo "master" > File2.txt
git init
git add .
git commit -m "init"
git branch expe
git checkout expe
mv File2.txt File3.txt 
mv Folder1/ Folder1-exp/
echo "expe" >> Folder1-exp/File1.txt 
git add .  
git commit -m "expe"
git checkout master
ls
git checkout expe
ls

1 Ответ

2 голосов
/ 09 июня 2010

Это было бы из-за разницы между git add . и git add -A.

Только git add -A будет записывать новые файлы и удаленные файлы.

Когда вы сделали свой второй git add ., вот что git status должен был сказать:

C:\HOMEWARE\git\tests\p2>git status
# On branch exp
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       new file:   f2/f1b.txt
#
# Changed but not updated:
#   (use "git add/rm <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       deleted:    f1/f1a.txt
#       deleted:    f1/f1b.txt
#

Рабочему дереву был удален первый каталог.

Итак, когда вы вернулись к мастеру, это рабочее дерево было сохранено:

C:\HOMEWARE\git\tests\p2>git checkout master
D       f1/f1a.txt
D       f1/f1b.txt
Switched to branch 'master'

Отсюда исчезновение 'f1' ...

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