git和本地修改

时间:2010-06-09 05:34:49

标签: git

我正在发现如何使用git。

我刚做了以下测试:

  1. 创建一个文件夹和2个文件
  2. 然后是git init,git add。,git commit -m“initial commit”
  3. 创建一个分支:git branch experimental,git checkout experimental
  4. 然后更改文件夹的名称并删除其中一个文件,然后git add。,git commit -m“experimental”
  5. 回到主人:git checkout master

    惊喜:我离开时没有找到主人;文件夹已经消失。我必须做一个git -reset - 很难找到我的文件夹。

    我想知道我是否做错了什么或者我是否理解git如何管理本地更改。谢谢你的帮助。

  6. 详细方案:

    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 个答案:

答案 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
#

工作树删除了第一个目录。

因此,当您切换回master时,保留了该工作树:

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

因此'f1'消失......