基础概念
四个区
五种状态
- 未修改(Origin)------工作区
- 已修改(Modified)&未追踪(Untracked)------工作区
- 已暂存(Staged)-------暂存区
- 已提交(Committed)--------本地仓库
- 已推送(Pushed)---------远程仓库
储藏和暂存
“储藏“可以获取你工作目录的中间状态——也就是你修改过的被追踪的文件和暂存的变更——并将它保存到一个未完结变更的堆栈中,随时可以重新应用。
使用“储藏“的现实场景比如当你正在进行项目中某一部分的工作,里面的东西处于一个比较杂乱的状态,而你想转到其他分支上进行一些工作。问题是,你不想提交进行了一半的工作,否则以后你无法回到这个工作点。
将你当前工作区代码储藏后,工作区这些代码会消失回到修改前的状态。
重新应用储藏的修改必须没有未提交的更改否则报错
储藏的修改如果被修改了那还原储藏的时候会出现 代码冲突,需要手动调节
“暂存”就是提交一次更改就是提交一次更改的前一个步骤,只有先放到暂存区才能后续提交到本地,同时有更改和暂存的时候进行提交会只提交已有的暂存。
它的意义在于实现了分批次提交,也就是我们因为某些原因更改了10个文件,但现在只想提交5个文件,这时候把这5个文件放入暂存区就是了,然后提交。
提取和拉取
fetch 只能更新远程仓库的代码为最新的,本地仓库的代码还未被更新,我们需要通过 git merge origin/master 来合并这两个版本,你可以把它理解为合并分支一样的。
pull 操作是将本地仓库和远程仓库(本地的)更新到远程的最新版本。
如果想要更加可控一点的话推荐使用fetch + merge。
还原-重置-挑拣
(以下为引用)
常见问题与应对操作
1,VS中如何处理代码冲突
(1)出现代码冲突的场景
1两人先后往同一个分支发出合并请求
2多个分支的代码合并到一个分支
3一人在同一个工作区签出分支,但前一个分支有更改未提交
(2)分别对应的解决办法
3产生冲突Vs会出现提示,点击冲突文件,选择保留合并即可
或者签出分支之前先将修改进行储藏,而不要暂存
2,VS中如何进行版本回退
(分别在更改和同步中)查看历史记录,点击右键选择还原,会还原到所点击节点的上一次提交
(分别在更改和同步中)查看历史记录,显示所有已提交更新,然后选中要恢复的版本,点击右键选择“挑拣”,VS会将当期版本作为待传出提交,提交至远程即可。
3,Vs中的分支管理(新建,合并,删除)
1,如何从任意一个提交上签出分支
查看历史记录-》签出分支
2,BUG分支与feature分支
就是用完就删除,分别用于debug和添加新功能测试
3,合并分支
这个地方常常出现提交冲突,原因一可能是远程库与本地库不一致导致的,先把远程库最新的提交拉取下来,不用怕拉下来会覆盖你修改的代码,如果你已经进行了本地的提交。原因二是下图这个情况,在本地仓库新分支签出和合并这两个时间段如果master是状态不变的则不会出现冲突,下图情况master变化了就是要手动合并了选择保留部分
4,版本管理方式
主要有俩,一通过新建分支,一个分支存一个版本,二通过打标签,通过标签号记录版本号
5,强制提交与覆盖
VS中好像没有强制提交和强制覆盖的方式,只能把远程拉取下来处理合并再重新推上去,用小乌龟和命令行可以强制推送,本地代码覆盖掉远程仓库
git push origin branch-name --force
远程仓库覆盖本地仓库
git fetch --all && git reset --hard origin/master && git pull
6,当本地仓库和远程仓库不同时,提交时提交发生冲突
发布到远程存储库时遇到错误: rejected Updates were rejected because the remote contains work that you do not have locally. This is usually caused by another repository pushing to the same ref. You may want to first integrate the remote changes before pushing again.
解决方案:
1,先拉取下来远程库,vs会提示你代码冲突,然后选择本地与远程代码进行保留,再进行一次本地提交,最后推送成功
2,注意如果要合并分支应该在拉取远程之后再合并
参考资料:
https://blog.csdn.net/qq_36383623/article/details/103090793
https://blog.gitee.com/2020/06/17/code-conflict/
https://blog.gitee.com/2019/04/25/gitee-branch/
https://www.cnblogs.com/zhaokunbokeyuan256/p/9597038.html
https://www.liaoxuefeng.com/wiki/896043488029600/900005860592480
https://blog.csdn.net/hhhhhhenrik/article/details/79482560