Git入门(二):远程仓库的使用

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。关联后,后续就不用再写 远端名称和分支名称。

这么说可能有点绕,我们来上手实验下:

  1. 单纯使用 git push,当前head指向master,我们位于master branch上。

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

  1. 使用 git push origin master:master

我们可以看到,GitHub创建了一个新分支master。

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

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

2.4 查看本地分支和远程分支的关联

git branch -vv

使用该指令,可以看到本地branch和远程branch创建过的关联。

3 从远程仓库克隆 GitHub到本地

  1. 假设我们看到一个GitHub项目需要clone到本地。这里还是拿我们刚刚push上去的项目为例。

  1. 在你的本地随意新建一个文件夹 右键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不仅抓到,还会融合。我们一步步实验来看看。

  1. 以push那个窗口假设项目的上传者,以clone那个窗口假设项目的下载者。两者位于不同的文件夹。

我们先对项目进行一下修改,多加了一个文件并push上去:

touch modify1.txt
git add .
git commit -m "we have modified the project"
git push
git-log

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

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

git merge

现在head也指向了最新的master。

  1. 使用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。

Git入门(三):在idea中使用Git

posted @ 2022-08-30 16:35  A07_xxxx  阅读(80)  评论(0)    收藏  举报