2010-06-09 5 views
3

Я открываю, как использовать git.git и локальные модификации

Я просто сделал следующее испытание:.

  1. создать папку и 2 файла
  2. затем мерзавец первонач, мерзавец добавить, мерзавец совершить -м «первоначальный фиксации»
  3. создать ветвь: мерзавец . филиал экспериментальный, мерзавец контроль экспериментального
  4. затем изменить имя папки и удалить один из файлов, то мерзавец добавить, мерзавец совершить -й «экспериментальный»
  5. вернуться в мастер: мерзавец кассы MASTE r

    Сюрприз: Я не нахожу мастера, поскольку я его оставил; папка исчезла. И я должен сделать 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 
+0

Ваша папка с обоих файлов исчезает, когда вы вернетесь в главная ветвь? Были ли другие изменения перед переключением ветвей? –

ответ

2

Это было бы из-за difference between git add . and 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» ...

+0

или используйте git mv и git rm -f. – p00ya

+0

@ p00ya: Согласен, я просто хотел проиллюстрировать, что только что произошло с командами OP. – VonC

+0

Спасибо, все. Просто интересно, почему -A это не поведение по умолчанию. – peyman