git 文件状态变化周期说明
目录下的文件主要分为两种:已跟踪和未跟踪。
- 已跟踪:被纳入版本控制管理。在上次快照中有记录,工作一段时间后,状态可能是未更新,已修改或已放入stage。
- 未跟踪:还没有被纳入版本控制管理。
状态变化说明
文件未跟踪
- 新建一个文件a.txt,此时文件处于untracked(未跟踪),处于该状态的文件是无法提交的。
- git add a.txt,此时文件变为tracked(已跟踪),此时文件可以提交。
- git commit -m “created new file: a.txt”,提交文件。
文件已跟踪
- git add a.txt,此时文件进入stage区,此时文件可以提交。
- git commit -m “modify file: a.txt”,提交文件。
commit -m 与 commit -am 区别
假设此时a.txt文件内容为hello
若a.txt是已跟踪状态,此时文件内容修改为hello world,再git commit -m提交的不是a.txt最新的内容hello world,而是hello。
如果想要提交a.txt最新内容,有两种方式
方式一:
- git add a.txt.
- git commit -m “message”
方式二:
- git commit -am “message”
简单来说,两者的区别在于git add命令。git commit -am可以省略使用git add命令将已跟踪文件放到暂存区的功能
git add命令是个多功能命令,根据目标文件的状态不同,此命令的效果也不同:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等
rm
用法
列出可取消跟踪的文件列表
git rm -r -n –cached 目录/文件
取消跟踪
git rm -r –cached 目录/文件
git add
git add命令把工作目录下面的有修改的文件添加的index(staging)里面去。
git add告诉Git你想在下次commit的时候把什么文件包含进去。
git add没有真正的对仓储有什么大的影响–在commit之前修改没有真正的被记录下来。
用法
git add
把文件的所有修改加入到index(staging)中, 为了下次commit
git add
把文件夹的所有修改加入到index(staging)中, 为了下次commit
git add -p
会出现一个交互式的界面供你一个个的选择哪些文件要添加到commit中, 哪些不要。注意了如果文件是untracked的状态, 他不会出现在这个界面中供你选择。
git add 与 git commit 是git的最基本命令组合
开发一个项目使用git始终是围绕着”modify/stage/commit”这个模式
首先, 在本地工作目录编辑文件,当你准备去保存一个当前项目状态的时候, 使用git add stage修改,接下来你有了一个stage的快照,使用git commit提交项目。
git add和svn add非常不同,svn add是把文件添加到仓储。git add是把文件的修改添加到仓储,这意味着你每次修改文件后需要使用git add,而svn add只需要为每个文件使用一次就行了。
Staging区
staging区是Git一个很独特的特性,你可以把他认为是一个本地工作目录到项目历史中间的一个缓存区。
stage能让你组织相关的change到一个快照,然后再提交到项目的历史里去,而不是将从上一次commit后的所有change都一次提交。这样你可以在commit之前利用add组织好一个主题的change然后再commit。
revert / reset
difference between revert and reset
revert 是将之前的提交反转(新增就删除),然后作为一次新的提交。
reset 是回滚到指定commit-id,该commit-id之后的提交都会删除。
在生产环境一般建议用git revert
参考链接:https://blog.csdn.net/q358543781/article/details/54708736