二、远程操作

(一)基础篇

1. git clone

main是本地的main分支,o(origin)/main是表示本地拉去下来的远程的main分支

o/main分支记录了远程仓库拉取时的分支状态

远程分支有一个特别的属性,在你切换到远程分支时,git会自动进入分离 HEAD 状态(这样做是因为git不想让你在本地就能直接进行修改远程仓库代码的操作)

2. git fetch(难点)

从远程仓库获取数据,并将本地仓库中的远程分支更新成远程仓库相应分支最新的状态

git fetch 完成了仅有的但是很重要的两步:

1)从远程仓库下载本地仓库中缺失的提交记录 2)更新保存在本地的远程分支指针( o/main)

但是!git fetch 并不会改变你本地仓库指针的状态。它不会更新你的 main 分支,也不会修改你磁盘上的文件,意思是本地仓库此时并没有与远程仓库完全同步!

3. git pull

git fetch + git merge o/main :

本地仓库合并远程仓库 

git pull :

 可以看出:git pull  =  git fetch + git merge

同样用于本地仓库合并远程仓库

4. git push 

git push 负责将变更上传到指定的远程仓库,并在远程仓库上合并你的新提交记录

本地仓库也会将o/main更新为远程仓库的状态

5. 解决远程仓库与本地仓库可能存在的冲突:2种方法

法一  git fetch + git rebase o/main + git push :

 先将远程仓库的最新数据更新到本地仓库,再改变本地仓库指针指向节点的基节点(上一个节点),再进行提交

这种做法的核心思想是在本地重新开辟一条和远程仓库一样的分支,再将最新的本地修改嫁接到新分支上,再进行提交,避免冲突

法二  git fetch + git merge o/main + git push :

这种做法同上面rebase的共同点在于,通过在本地仓库解决冲突,然后再提交远程,但是在本地进行的具体git操作有差别

这种做法,直接将远程和本地仓库先进行代码合并,再提交到远程仓库

在实操中,通过idea内置的git解决代码冲突时,更常用到的其实是这种,先pull下来远程代码,然后在本地进行代码合并解决冲突,在push进远程 

法一变体  git pull --rebase + git push :

 前面已经介绍过 git pull 就是 fetch 和 merge 的简写,类似的 git pull --rebase 就是 fetch 和 rebase 的简写!

法二变体  git pull + git push :

 实务中最常用的方法!

文章来源

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: