我对使用 Git 比较陌生。这是我到目前为止所做的:
$ git branch
* master
$ git status
# On branch master
nothing to commit (working directory clean)
$ git branch mywork
$ git checkout mywork
$ git branch
* mywork
master
...modify some files...
$ git status
# On branch mywork
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: file1.html
# modified: file2.html
#
no changes added to commit (use "git add" and/or "git commit -a")
Run Code Online (Sandbox Code Playgroud)
现在,如果我切换到我的另一个分支,我希望我的更改保留在这个分支中。但是,变化似乎伴随着我:
$ git checkout master
M file1.html
M file2.html
Switched to branch 'master'
$ git status
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: file1.html
# modified: file2.html
#
no changes added to commit (use "git add" and/or "git commit -a")
Run Code Online (Sandbox Code Playgroud)
难道我做错了什么?还是我误解了我对 Git 的使用?
您的工作目录和您的存储库彼此分开,从某种意义上说,您的工作目录中的代码在提交之前不会与分支相关联。
为了进一步搅浑水,git 引入了一个称为索引的新概念,它是您的工作目录和存储库之间的中转站。当你运行git add一个文件时,你真正在做的是将它添加到索引中。同样,当您运行 时git commit,您最终将索引的内容添加到存储库中。
git status 区分索引和工作目录如下。
Changes to be committed: 表示指数的变化Changed but not updated: 表示工作目录中对已添加到存储库中的文件的更改(并且随后未被忽略)Untracked files:表明已到文件在工作目录的变化不是已经被添加到存储库如果您有一些要暂时保存的更改,但不能保证它们有自己的分支,请使用git stash. 这是 git 用于创建极其轻量级的单次提交分支的机制。从手册页(重点是我的):
使用
git stash时要录制的当前状态的工作目录和索引,但想回到一个干净的工作目录。该命令保存您的本地修改并恢复工作目录以匹配HEAD提交。
| 归档时间: |
|
| 查看次数: |
1647 次 |
| 最近记录: |