VS中git概念解析与深度使用

E哥的aws认证攻略 2020-06-25

参考资料:

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:还原
还原针对的是某一次提交的所有commit,做了反向操作,新生成一个commit覆盖了这个操作。就和在同步界面Revert某个提交一样。
2:挑拣
还原本地2的提交后,对本地2的提交进行挑拣操作,发现代码又出现了。
结论:挑拣是针对两次commit之间不同代码的比对,后进行合并不同的代码。且针对的也是某一次提交。(和解决代码冲突的操作差不多)
3:重置--hard
假设目前有三次提交A-B-C,对A进行“重置--hard”后发现本地1的代码回到了A。参考https://www.cnblogs.com/kidsitcn/p/4513297.html
结论重置--hard 将我们的head、index、工作区代码全部回滚到A。
但是需要注意的origin\中的内容并不会修改,本地如果现在直接“同步”操作后,做的重置--hard操作又没用了。
4:重置--mixed
假设目前后三次提交A-B-C,对于A进行“重置--mixed”后发现本地代码没变,
但是head、index发生了更变,本地代码没变!自己可以修改本地代码后再次提交,但是对比的head、index不同了。
以下是另外一个博主给出的解释:
所有该branch上从original HEAD(commit)到你重置到的那个commit之间的所有变更将作为local modifications保存在working area中,(被标示为local modification or untracked via git status),但是并未staged的状态,你可以重新检视然后再做修改和commit。
 
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

常见问题与应对操作

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变化了就是要手动合并了选择保留部分

VS中git概念解析与深度使用

 

4,版本管理方式

主要有俩,一通过新建分支,一个分支存一个版本,二通过打标签,通过标签号记录版本号

5,强制提交与覆盖

VS中好像没有强制提交和强制覆盖的方式,只能把远程拉取下来处理合并再重新推上去,用小乌龟和命令行可以强制推送,本地代码覆盖掉远程仓库

git push origin branch-name --force

远程仓库覆盖本地仓库

git fetch --all && git reset --hard origin/master && git pull

还差实地的两台电脑测试一下

相关推荐