前言
读研啦,课题组里用 gitlab 进行每周工作的整理汇总,我也趁机巩固一下 git 与远程仓库的关联。
为了方便,我用的VSCode进行编辑,用 git bash 是一样的。
一. 建立本地仓库
通常来讲,我们一般会在本地先建立工作目录,然后在里面进行工作,过段时间后知后觉:哦?好像要把内容放到远程仓库。这时候目录里已经有很多内容了。
这个时候我们需要先建立本地的仓库,找到
源代码管理
,并
初始化仓库
(git init)。
之后的源代码管理可以进行
暂存更改
(git add)和
提交
(git commit)等操作。
如果你没有进行
提交
,那后续的步骤会特别简单。
如果已经进行了
提交
,那么本地的仓库便拥有了属于自己的 history commit,之后的同步会不一样。
二. 与远程仓库建立关联
我们找到要同步的远程仓库,如果没有的话,自己新建一个就好了。我这里用了一个 gitee 的仓库。
我们复制这个仓库的链接(
克隆/下载 - 复制
),并在源代码管理点击
远程 - 添加远程存储库
,把复制的链接粘贴进去,选择
从 URL 添加
,之后给远程仓库取一个有辨识度的标识就行了(一般取名叫
origin
)
现在本地仓库和远程仓库建立了关联,我们点击左下角的分支名,能看到上方的选择框里有了远程的分支。
三. 拉取到本地仓库
回到之前那个话题:新建本地仓库之后有没有
提交
.
1. 没有提交
那么这一步会很简单,只需要直接拉取远程仓库就可以了。
点击
拉取,推送 - 拉取自
,并选择远程仓库的那个分支即可。
之后我们切换到资源管理器,能发现远程仓库里的文件全都已经同步到我们本地的仓库了。
2. 有过提交
这个时候,直接拉取远程仓库会提示
fatal: refusing to merge unrelated histories
。这是因为
拉取
(pull) 会将远程分支与本地分支进行
合并
(merge),而合并则需要一方为空(NULL),或者拥有相同的祖先节点。
没有提交的时候,本地分支为 NULL,可以合并;而提交之后,本地分支生成了自己的节点,因此与远程分支不可能拥有相同的祖先节点,从而不能够合并。
这个时候我们需要用到
变基
这个操作,原理简单来说就是改变历史,将远程分支插入到自己的历史中,从而拥有相同的祖先节点。
我们点击
分支 - 变基分支
,选择远程的分支就可以了。
之后切换到资源管理器,也能发现远程仓库的文件同步到了本地仓库。
推送到远程仓库
现在我们本地仓库不仅有本地的工作文件,还拥有了远程仓库的所有文件,而远程仓库却没有我们本地仓库的工作文件,所以我们需要把本地仓库推送给远程仓库。
首先我们设置上游分支,在终端输入命令:
git branch --set-upstream-to [远程分支名]
之后在源代码管理中点击同步更改即可。
可以看到远程仓库的内容也更新了。
后记
写博客是一个很好的巩固过程,刚写完的我都比刚开始写的我拥有了更深的理解,只是每次写博客都要花几个小时,觉得有点耽误时间,所以不经常写。看来思考一下如何 解决问题/摆正心态 也是很有必要的。
版权归原作者 檐廊少主 所有, 如有侵权,请联系我们删除。