VS中git概念解析与深度使用
参考资料:
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
基础概念
四个区
- 工作区(Working Area)
- 暂存区(Stage)
- 本地仓库(Local Repository)
- 远程仓库(Remote Repository)
五种状态
- 未修改(Origin)------工作区
- 已修改(Modified)&未追踪(Untracked)------工作区
- 已暂存(Staged)-------暂存区
- 已提交(Committed)--------本地仓库
- 已推送(Pushed)---------远程仓库
储藏和暂存
“储藏“可以获取你工作目录的中间状态——也就是你修改过的被追踪的文件和暂存的变更——并将它保存到一个未完结变更的堆栈中,随时可以重新应用。
使用“储藏“的现实场景比如当你正在进行项目中某一部分的工作,里面的东西处于一个比较杂乱的状态,而你想转到其他分支上进行一些工作。问题是,你不想提交进行了一半的工作,否则以后你无法回到这个工作点。
将你当前工作区代码储藏后,工作区这些代码会消失回到修改前的状态。
“暂存”就是提交一次更改就是提交一次更改的前一个步骤,只有先放到暂存区才能后续提交到本地,同时有更改和暂存的时候进行提交会只提交已有的暂存。
它的意义在于实现了分批次提交,也就是我们因为某些原因更改了10个文件,但现在只想提交5个文件,这时候把这5个文件放入暂存区就是了,然后提交。
提取和拉取
fetch 只能更新远程仓库的代码为最新的,本地仓库的代码还未被更新,我们需要通过 git merge origin/master 来合并这两个版本,你可以把它理解为合并分支一样的。
pull 操作是将本地仓库和远程仓库(本地的)更新到远程的最新版本。
如果想要更加可控一点的话推荐使用fetch + merge。
还原-重置-挑拣
(以下为引用)
常见问题与应对操作
1,VS中如何处理代码冲突
(1)出现代码冲突的场景
1两人先后往同一个分支发出合并请求
2多个分支的代码合并到一个分支
3一人在同一个工作区签出分支,但前一个分支有更改未提交
(2)分别对应的解决办法
1,2网页端有如同第三点Vs的提示,手动选择保留那种冲突文件即可
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
还差实地的两台电脑测试一下