git 版本库区域

来源:互联网 发布:北京网站排名优化 编辑:程序博客网 时间:2024/06/08 06:30

git工具分为三个区域,工作区、暂存区、版本库

工作区:版本库目录,目录下面的内容均为工作区。

暂存区:通过某些命令执行后,会先把文件放入到一个缓存区中,最后方便一次性提交。

版本库:使用git commit提交之后,会生成一些列的元数据文件。

下面先上一副图,会根据图中的相关命令演示文件区域的变化,和展现文件所在的区域。




在工作空间创建hello文件,通过git status 查看文件状态,通过GIT GUI查看文件所在区域

huawei@DESKTOP-JTC012C MINGW64 ~/Desktop/git-repo (master)$ ls -a./  ../  .git/huawei@DESKTOP-JTC012C MINGW64 ~/Desktop/git-repo (master)$ echo "hello world" > hellohuawei@DESKTOP-JTC012C MINGW64 ~/Desktop/git-repo (master)$ git statusOn branch masterNo commits yetUntracked files:  (use "git add <file>..." to include in what will be committed)        hellonothing added to commit but untracked files present (use "git add" to track)


没有被版本库记录过的文件是无法直接提交的,因此必须将文件缓存到暂存区才能够用git commit命令进行提交。通过上面git status给我们的信息可以知道,

Untracked files:                                                                      
  (use "git add <file>..." to include in what will be committed)

意思是,当前文件状态Untracked,要提交之前必须使用git add <file>...命令暂存文件。如下:

huawei@DESKTOP-JTC012C MINGW64 ~/Desktop/git-repo (master)$ git add hellohuawei@DESKTOP-JTC012C MINGW64 ~/Desktop/git-repo (master)$ git statusOn branch masterNo commits yetChanges to be committed:  (use "git rm --cached <file>..." to unstage)        new file:   hello


同样的道理,通过上面git status的提示,我们可以知道

Changes to be committed:                           
  (use "git rm --cached <file>..." to unstage
)

通过使用git rm --cached <file>可以将文件从暂存区移除,但工作空间的源文件不会被删除

最后我们通过git commit来提交文件,查看版本库的变化。

版本库的初始文件如下,此时什么文件也没有,打开GIT GUI > Repository > Browse master'files


使用git commit提交之后再次观察这三个区域的变化,注意提交的使用必须注明作者和提交日志。因此在提交之前必须配置相关的信息。

通过 git config --list查看配置的环境变量。通过git config -h查看使用方式

huawei@DESKTOP-JTC012C MINGW64 ~/Desktop/git-repo (master)$ git config --global user.name pjjhuawei@DESKTOP-JTC012C MINGW64 ~/Desktop/git-repo (master)$ git config --global user.email "1005241532@qq.com"huawei@DESKTOP-JTC012C MINGW64 ~/Desktop/git-repo (master)$ git commit -m "this is first commit"[master (root-commit) 30532e8] this is first commit 1 file changed, 1 insertion(+) create mode 100644 hellohuawei@DESKTOP-JTC012C MINGW64 ~/Desktop/git-repo (master)$ git statusOn branch masternothing to commit, working tree clean

如果要同时删除版本库中和工作目录下的文件,可以使用git rm <file>命令,此时rm文件任何选项

结论:git分为三个区域。git  add可以将工作目录的文件缓存到暂存区,git  commit一次性上传暂存区的所有文件,并且生成一次提交。git rm --cached只删除暂存区的文件,git rm删除版本库和工作目录下的文件,git status查看当前工作区的状态。