git 工作区管理

时间:2021-09-30 08:45:37

git工作区

git的工作区就是电脑中能看到的目录,比如我的learning文件夹就是一个工作区

git 工作区管理

版本库暂存区

工作去有一个隐藏的目录.git,这个不算工作区,而是git的版本库
git的版本库中存了很多东西,其中最重要的就是stage(或是index)的暂存区,还有git为我们自动创建的第一个分支master,以及指向master的一个指针叫head

git 工作区管理

我们把文件向git版本库里添加的时候,分为两步:
用git add 把文件添加进行实际上就是把文件修改添加到暂存区
用git commit提交更改,实际上就是把暂存区的内容提交到当前分支,我们创建git版本库时候,git自动为我们创建唯一一个master分支,所以现在,git commit就会想master分支提交更改。
如我们修改了readme.txt和新添加了license,使用git status 命令就会提示我们修改了readme文件,license新添加的文件会提示Untracked的状态,使用git add 添加到暂存区

git 工作区管理

使用 git commit提交到master版本库

git 工作区管理

最后,通过git push推送到远程仓库

git管理修改

git跟踪并管理的是修改,而非文件。
例如:第一次修改->git add -> 第二次修改 ->git commit
在用git add命令后,在工作去第一次修改被放入暂存区,但是在工作区的第二次修改并没有放入暂存区,所以git commit只负责把暂存区的修改修改提交了,也就是第一次的修改被提交了,第二次的修改不会被提交。(原因:git管理的是修改)
如果需要提交第二次修改,应该如何做呢?
> 可以继续git add再git commit
> 别着急提交第一次修改,先git add第二次修改,在git commit,就相当于把两次修改合并后在一块提交了。
> 第一次修改->-git add>第二次修改->git add->git commit

git撤销修改

工作文件修改错误,需要撤销,命令git checkout -- 就派上用场
命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,有两种情况
readme.txt修改后没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态
readme.txt已经添加到暂存区,又作了修改,现在撤销修改就回到添加到暂存区后的状态
总之,就是让这个文件回到最近一次git commit或git add时的状态
如果文件已经修改并git add添加到暂存区,在git commit之前,需要撤销修改,使用命令 git reset head file.
命令 git reset head file 可以把暂存区的修改撤销掉,重新放回工作区。 (场景1)如果改乱了工作区的某个文件的内容,想直接丢弃工作去的修改的时候,使用命令 git checkout --file
(场景2)不然改乱了工作去并且添加到暂存区的时候,想直接丢弃,分为两步 第一 使用命令 git reset Head file ,回到"场景1",第二部按场景1操作。
(场景3)如果已经提交了不合适的修改到版本库,想撤销本次提交,使用"版本回退" 前提是没有推送到远程库。
ps注意:
使用的git checkout --file 命令,命令中的"--"很重要,没有"--"就变成了切换到另外一个分支的命令。

git删除文件

文件从工作区删除,工作区和版本库就不一致了,通过git status就可发现那些文件被删除。
如果确实需要从版本库中删除该文件,就用命令 git rm删掉,并且 git commit;
如果删除错了,因为版本库中还有该文件,使用 git checkout -- xx.file 还原该文件。 命令:git checkout是用版本库中的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。