git工作流区域
一、主要区域
- 工作目录
- 作用:本地系统中的文件夹
 - 文件状态
- 未跟踪:文件刚添加到工作目录,还没有被Git管理(还没有
git add) - 已跟踪:Git已经对这个文件进行过管理,Git在本地仓库中有这个文件的历史记录。
- 未修改:该文件没有再做任何修改。
 - 已修改:修改过了,但是没有使用
git add来通知Git,这个文件被修改了。 - 已删除:删除了,但是没有使用
git add来通知Git,这个文件已经被删除了。 
 
 - 未跟踪:文件刚添加到工作目录,还没有被Git管理(还没有
 
 - 暂存区
- 作用:存储经过
git add,但是没有git commit的文件。可以认为是缓存区域。 
 - 作用:存储经过
 - 本地仓库
- 作用:存储所有的提交记录、分支信息、标签等数据。
 - 提交历史:每次使用
git commit,Git会将暂存区内容保存到本地仓库,并为该提交创建一个唯一的提交ID。这些提交记录形成了项目的版本历史。 - 本地分支:可以在本地仓库中创建和切换分支
 
 - 远程仓库
- 作用:远程仓库可以托管代码。
 - 同步:远程仓库允许不同的开发者之间共享代码,并且支持推送(git push)和拉取(git pull)。
 
 
二、各个区域的交互
- 工作区→暂存区:
- 对文件做出修改后,可以使用
git add file,将这些修改添加到暂存区。 
 - 对文件做出修改后,可以使用
 - 暂存区→工作区
- 撤销暂存区中的文件,决定不提交
git restore --staged file,相当于撤销git add 
 - 撤销暂存区中的文件,决定不提交
 - 工作区→本地仓库
- 直接提交,不先放入暂存区
git commit -a,把所有【已跟踪的文件】全部提交- 【未跟踪的文件】不会被提交
 - 【暂存区的文件】同样会被提交
 
 
 - 直接提交,不先放入暂存区
 - 本地仓库→工作区
- 变回之前提交的状态
git reset --hard 提交版本号 
 - 变回之前提交的状态
 - 暂存区→本地仓库:
- 使用
git commit -m "注释"命令将暂存区中的所有文件提交到本地仓库。 
 - 使用
 - 本地仓库→暂存区
- 使用
git reset --soft 提交版本号 
 - 使用
 - 本地仓库→远程仓库
- 想要把本地仓库的更新推送到远程仓库时,可以使用
git push 
 - 想要把本地仓库的更新推送到远程仓库时,可以使用
 - 远程仓库→本地仓库
- 使用
git fetch或git pull命令将远程仓库的最新更新拉取到本地仓库。前者仅更新本地的【远程跟踪分支】,而后者会拉取远程更新并尝试自动合并。 
 - 使用
 
三、案例演示
- 
新建了一个文件a.txt,此时的状态是
![]()
上图,a.txt是一个新文件,此时,就是工作目录中的【未被跟踪状态】
 - 
使用
git add a.txt后
![]()
此时,文件已经被放到了暂存区。 - 
此时,我不想跟踪这个文件了,可以使用
git rm --cached a.txt![]()
可以看见,文件又处于工作目录的【未被跟踪】状态 - 
然后使用
git add放入暂存区,同时使用git commit -m "第一次提交",放入本地仓库中。
![]()
此时,内容全部提交了。 - 
然后修改了a.txt的内容,再次查看状态。
![]()
可以看见和新建文件时的状态不一样,现在的状态是工作目录中的【已跟踪】 - 
此时,我发现修改的内容出错了,可以使用
git restore a.txt恢复到上次【已提交的状态】
![]()
可以看见,恢复成上次提交的内容了 - 
然后正确修改了a.txt的内容,同时
git add a.txt将其加入到暂存区中(这里涉及到工作目录到暂存区的转移)
![]()
 - 
此时,发现a.txt的内容少了一部分,我希望补上之后,再一起提交,此时我可以先
git restore --staged a.txt,从暂存区移回到工作目录。(这里涉及到暂存区到工作目录的转移)![]()
可以看见,又回到了工作目录了 - 
添加完内容之后,我希望直接提交了,不希望先到暂存区。使用
git commit -a -m "第二次提交"。(这里涉及到工作目录到本地仓库的转移)。git commit -a相当于先把【已被跟踪】的文件全部放入暂存区,然后再git commit。(git commit是将暂存区转移到本地仓库)
![]()
可以看见,全部提交了。 - 
我突然发现,最近一次提交的部分内容有问题,希望回退到暂存区,使用
git reset --soft 3d35(这里涉及到本地仓库到暂存区的转移),后面的3d35是使用git log查找上一次提交的版本号
![]()
可以看见,已经回到了暂存区了。 - 
提交内容,
$ git commit -m "第二次正确的提交"
![]()
 - 
突然发现,最近一次提交的内容,都有问题,要全部修改了,希望回退到第一次提交的内容。使用
git reset --hard 3d35(这里涉及到本地仓库到工作目录的转移)
![]()
注意,这和10有什么区别?假设第一次提交的内容是111,然后增加了2222和3333,同时git add和git commit,此时如果是10这种情况,文件的内容就是111和2222和3333;如果是12这种情况,文件内容就只有111了。 
                    
                












                
            
        
浙公网安备 33010602011771号