Git入门(二):远程仓库的使用
码云和GitHub的流程差不多 这里只记录GitHub的
1 初始操作
1.1 创建远程仓库

点击Create repository
1.2 配置详细信息


好现在创建成功了。

1.3 配置SSH公钥
参考 https://blog.csdn.net/x550392236/article/details/123069751 配置
使用 ssh -T git@github.com 来验证是否成功,可能会出现这样一个报错:

直接 yes + enter下一步,就会生成host文件,就ok了。你的.ssh目录下会出现这样的文件,意思就是永久把github.com视为已知host。

2 操作远程仓库 本地到GitHub
2.1 添加远程仓库
- 其中origin是远端名称,默认为origin,想起其他名字也可以,但是一般使用的是这个。
- 后面是你的远程仓库路径,也就是我们刚刚创建的GitHub仓库的SSH
git remote add origin git@github.com:aaaa/bbbb.git
2.2 查看远程仓库
git remote
2.3 推送到远程仓库
git push [-f] [--set-upstream] [远端名称 [本地branch名][:远端branch名]]
带[]是可选参数:
- -f:是否强制覆盖,若有同名文件,会推送失败。加上-f后,会以新文件强制覆盖同名文件。
- --set-upstream:代表建立起和远端分支的关联关系。比如 --set-upstream origin master:master,意味着和远端仓库的master分支进行关联。这里本地branch和远端branch名字相同,可以只写本地分支,也就是 --set-upstream origin master。关联后,后续就不用再写 远端名称和分支名称。
这么说可能有点绕,我们来上手实验下:
- 单纯使用 git push,当前head指向master,我们位于master branch上。

出现了报错,没有推送成功,该报错的意思是当前分支master没有一个上游分支,推荐使用set upstream来关联上游分支。
- 使用 git push origin master:master

我们可以看到,GitHub创建了一个新分支master。
我们还可以创建一个新的branch,GitHub上并没有这个branch,是根据分支名来创建的。若本地分支名和远程分支名相同,可以只写一个分支名。

- 使用 git push --set-upstream origin master:master,该操作绑定了本地branch master和远程branch master,下次只要你从master分支推送,你就可以直接 git push。


2.4 查看本地分支和远程分支的关联
git branch -vv
使用该指令,可以看到本地branch和远程branch创建过的关联。

3 从远程仓库克隆 GitHub到本地
- 假设我们看到一个GitHub项目需要clone到本地。这里还是拿我们刚刚push上去的项目为例。

- 在你的本地随意新建一个文件夹 右键Git Bash Here。你可以给项目起一个其他名字 也可以使用默认的,项目开发者起的名字。
git clone git@github.com:aaa/bbb.git


这个项目已经克隆下来了,里面还有个.git文件。再进去git bash here,可以发现已经位于master分支上。

对比1下可以发现,我们刚刚没有push dev01分支,所以会多出一个,但是其他内容都是相同的。
4 从远程仓库中抓取(fetch)和拉取(pull)
如果每一次项目的作者更新,我们都clone一下,那也太麻烦了,而且有的项目可能很大。我们更希望获得作者对项目做了哪些修改。
简单来说,pull = fetch + merge。
抓取只是抓到,但是不会融合到master中,而pull不仅抓到,还会融合。我们一步步实验来看看。
- 以push那个窗口假设项目的上传者,以clone那个窗口假设项目的下载者。两者位于不同的文件夹。
我们先对项目进行一下修改,多加了一个文件并push上去:
touch modify1.txt
git add .
git commit -m "we have modified the project"
git push
git-log

- 以clone那个窗口假设项目的下载者,我们现在想要获得作者的修改。使用fetch
git fetch

我们发现,fetch之后,和上面push的结果是不一样的,head指向的还是之前的master。
git merge

现在head也指向了最新的master。
- 使用pull
我们再实验1下,push一个新的修改上去,然后直接使用pull。
上传者:
touch modify2.txt
git add .
git commit -m "Again, we modified the project"
git push
git-log

下载者:
git push
git log

直接指向了最新的master。

浙公网安备 33010602011771号