Git之本地仓库(一)
初始化Git仓库
切换到需要创建仓库的项目中使用初始化仓库命令
git init
会在项目目录中创建一个名为.git的子目录,目录结构如下
本地仓库的三个主要部分
- working tree
- staging area
- Git directory(Repository)
Git流程:
- 修改working tree中的文件
- 使用git add * 有选择地暂存作为下一次commit的更改
- 执行commit将暂存区中的文件以快照的形式存储到Git directory里
文件状态的生命周期
git文件有四种状态:
- Untracked
- Modified
- Staged
- Unmodified
1.Untacked状态
添加到working tree中的新文件,没有被git进行跟踪管理,处于untracked状态
2.Modified状态
2.1对处于Unmodified状态的文件进行修改(及已经commit到repository中),该文件状态变为Modified
2.2对位于staging area中的文件进行修改,该文件状态也会变成modified
3.Staged状态
Untracked状态的文件被git add 放入staging area后,位于暂存区的文件处于staged状态
4.Unmodified状态
使用commit命令提交到repository中的文件状态处于Unmodified状态
文件操作
移除操作
将staging area中的文件移除
git restore --staged fileName
git rm --cached fileName
git rm --cached和git restore --staged都可以将staging area中的文件移除,移除后的文件状态都为Untracked,暂未发现两者之间的区别(待后续发现区别后更新,或者本来就没区别)
修改操作
修改Unmodified状态的文件名
git mv oldFile newFile
删除操作
1.从working tree中撤销rm操作
如果不小心使用rm删除working tree中 的文件
可以使用 git restore file来在working tree中撤销该操作
2.从staging area中撤销操作到working area,然后重复上一步
rm操作了working directory中的文件,并git add到暂存区中,可以先使用git restore --staged 撤销暂存区中的改变,然后再撤销working tree中的操作
使用git rm file会直接将删除操作的改变提交到暂存区,可以通过上述步骤撤销
3.从staging area中删除,但是保留在working tree中
git rm --cached 4.txt
其他操作
查看commit记录
-
git log 查看现有的commit历史记录
-
git log -n 显示最后n个条目
-
git log -a 显示每次commit中引入的差异
-
git log --pretty=oneline 比较适合查看大量提交
-
git log --pretty=format:"%h %s" --graph 显示分支和合并记录
-
git diff 查看已经处于modified状态的文件
-
git commit -a -m "提交信息"
添加-a选项会提交自动暂存modified状态的文件,从而可以跳过git add状态
rm *
rm操作后也要git add然后commit或者使用git commit -a -m
碰到的问题
git add * 时出现的warning
warning: LF will be replaced by CRLF in README.
The file will have its original line endings in your working directory
解决办法
git config --global core.autocrlf false
分析原因
路径中存在/的符号转义问题,false表示不转换符号