哈喽!大家好,我是【一心同学】,一位上进心十足的【Java领域博主】!
✨【一心同学】的写作风格:喜欢用【通俗易懂】的文笔去讲解每一个知识点,而不喜欢用【高大上】的官方陈述。
✨【一心同学】博客的领域是【面向后端技术】的学习,未来会持续更新更多的【后端技术】以及【学习心得】。
✨如果有对【后端技术】感兴趣的【小可爱】,欢迎关注【一心同学】
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️
目录
一、准备工作
1.1 注册账号
1.2 建立仓库
1.3 完善仓库信息
1.4 设置Git基本信息
设置用户信息
生成密钥
二、获取码云上的资源
git remote add与git clone的区别
获取仓库信息
删除关联仓库
三、推送分支
四、多人协作抓取分支
4.1 模拟真实环境
4.2 抓取分支
4.3 推送分支
4.4 多人协作小结
五、查看历史分支
六、命令总结
小结
进入“码云”注册账号。
链接:Git官网
点击创建,创建成功,进入到以下界面。
打开Git界面
注:右击,下载完Git会默认有这个属性,没有的话可以去在开始界面进行查找
设置提交代码时的用户信息
$ git config [--global] user.name "[name]"
$ git config [--global] user.email "[email address]"
例如:
git config --global user.name 'yixin'
git config --global user.email '[email protected]'
我们查看是否成功把我们的用户信息注入了。
输入:
git config --list
可以发现,已经有我们的用户信息了。
步骤一:输入以下命令生成密钥:
ssh-keygen -t rsa -C "[email protected]"
步骤二:去本地获取密钥:
可以发现生成了以下文件。
以记事本方式打开:复制我们的公钥全部内容—id_rsa.pub。
步骤三:前往“码云”进行生成密钥。
a、点击“设定”
b、进入“SSH公钥”,并把刚刚复制的公钥粘贴到右侧的框子里面。
点击确定。
这样就成功在“码云”上生成我们的公钥了,意味着我们可以利用Git进行远程操作了
git remote add 只是在您的git config中创建一个条目,指定特定URL的名称。你必须有一个现有的git仓库来使用它,需要init
git clone通过复制位于您指定的URI上的现有git存储库来创建新的git存储库,不需要init。
我们采用git clone来获取资源
(1)获取码云仓库的SSH地址
(2)将远程仓库克隆过来
使用以下命令:
git clone 码云上SSH的链接
(3)进入我们刚刚克隆过来的文件夹mygit,查看远程仓库信息
使用命令:
$ git remote -v
可以发现,显示了可以抓取和推送的origin的地址,说明我们已经成功与远程仓库连接上去了。
注意:如果没有推送权限,就看不到push的地址。
如果我们要删除已关联的远程仓库,执行以下命令即可
$ git remote rm origin
现在我们再使用git remote -v查看远程仓库信息
可以发现为空了。
推送分支,就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,Git就会把该分支推送到远程库对应的远程分支上。
我们使用命令git branch查看当前仓库拥有的分支。
发现有一个默认的master分支。
现在我们在master分支下创建一个readme.txt的文件,然后将其推送到远程仓库。
(1)创建readme.txt记事本
内容为:
hello,yixin
(2)添加到本地仓库
(3)推送到远程仓库
执行以下命令:
$ git push origin master
出现以下信息,说明已经成功推送到远程仓库了。
我们去我们的码云仓库查看一下是否有readme.txt这个文件。
可以看到的推送的内容已经过来了!
在我们开发当中,并不需要把所有的分支都推送到远程,那么,哪些分支需要推送,哪些不需要呢?
master分支:主分支,因此要时刻与远程同步;
dev分支:开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;
bug分支:只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;
feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。
总之,就是在Git中,分支完全可以在本地自己藏着玩,是否推送,更加开发需求而定!
我们先在我们的码云上再建立一个分支dev。
点击分支管理:
新建分支dev:
我们把远程仓库克隆到本地后,默认情况下,我们只能看到master分支,我们可以用git branch进行查看一下。
但是我们现在需要在dev分支上面进行开发,就必须创建远程origin的dev分支到本地.
第一步:由于我们刚刚创建了新分支dev,需要更新远程仓库数据到本地。
执行命令:
$ git fetch origin
第二步:创建远程origin的dev分支到本地
执行命令:
$ git checkout -b dev origin/dev
现在就可以在这个dev分支上面进行开发了。
我们创建一个env.txt记事本,然后使用dev分支push到远程。
现在我们就提交成功了,而在我们的远程仓库dev分支下也有这个env.txt文件了。
但是我们想,虽然我们已经提交了文件到远程仓库中,那么如果其它人也是跟我们在一样对同样的文件进行了修改,并试图推送:
$ git push origin dev
To [email protected]:half-a-coke/mygit.git
! [rejected] dev -> dev (non-fast-forward)
error: failed to push some refs to '[email protected]:half-a-coke/mygit.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
推送失败,假设我们就是其他人,因为同事的最新提交和我们试图推送的提交有冲突。
解决办法也很简单,先用git pull把最新的提交从origin/dev抓下来,然后,在本地合并,解决冲突,再推送。
但我们需要先指定本地dev分支与远程origin/dev分支的链接,设置dev和origin/dev的链接:
$ git branch --set-upstream-to=origin/dev dev
Branch 'dev' set up to track remote branch 'dev' from 'origin'.
接着我们就可以进行pull了:
$ git pull
Auto-merging env.txt
CONFLICT (add/add): Merge conflict in env.txt
Automatic merge failed; fix conflicts and then commit the result.
这回git pull成功,但是由于合并有冲突,需要手动解决,解决的方法和分支管理中的解决冲突完全一样。解决后,提交,再push:
$ git commit -m "fix env conflict"
[dev 57c53ab] fix env conflict
$ git push origin dev
Counting objects: 6, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (6/6), 621 bytes | 621.00 KiB/s, done.
Total 6 (delta 0), reused 0 (delta 0)
To github.com:michaelliao/learngit.git
7a5e5dd..57c53ab dev -> dev
因此,多人协作的工作模式通常是这样:
首先,可以试图用git push origin
推送自己的修改; 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin
推送就能成功! 如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to
origin/ 。这就是多人协作的工作模式,一旦熟悉了,就非常简单。
(1)git remote -v:查看远程库信息;(2)本地新建的分支如果不推送到远程,对其他人就是不可见的;
(3)从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;
(4)在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
(5)建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;
(6)从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。
查看历史分支我们可以使用git log进行查看
$ git log --graph --pretty=oneline --abbrev-commit
* e0ea545 (HEAD -> master) Merge branch 'master' of gitee.com:half-a-coke/mygit.git
|\
| * f005ed4 (origin/master) set exit=1
* | 582d922 add author
* | 8875536 add comment
|/
* d1be385 init hello
...
但是这样的分支我们看的非常难受,我们可以先使用git rebase:
$ git rebase
First, rewinding head to replay your work on top of it...
Applying: add comment
Using index info to reconstruct a base tree...
M hello.py
Falling back to patching base and 3-way merge...
Auto-merging hello.py
Applying: add author
Using index info to reconstruct a base tree...
M hello.py
Falling back to patching base and 3-way merge...
Auto-merging hello.py
接着我们再用git log看看:
$ git log --graph --pretty=oneline --abbrev-commit
* 7e61ed4 (HEAD -> master) add author
* 3611cfe add comment
* f005ed4 (origin/master) set exit=1
* d1be385 init hello
...
远程分支的提交历史就是一条直线。
我们来总结本篇博客所学到的新命令。
#将远程仓库克隆到本地
$ git clone 码云上SSH的链接
#查看远程仓库信息
$ git remote -v
#删除已关联的远程仓库
$ git remote rm origin
#推送到远程仓库
$ git push origin master
#创建远程仓库的分支到本地
$ git checkout -b 本地分支名称 远程分支名称(origin/dev)
#设置本地分支与远程分支的链接
$ git branch --set-upstream-to=origin/dev dev
#把最新的提交从远程仓库抓下来
$ git pull
#整理分支
$ git rebase
#查看历史分支
$ git log --graph --pretty=oneline --abbrev-commit
以上就是【一心同学】对【Git】连接【码云】的具体使用,在我们的开发当中,我们是以一个【团队】进行开发的,经常需要将我们负责开发的【功能】推送到【远程仓库】中,然后完成整体的功能,所以对这个远程仓库的学习,大家务必要【掌握】好。
如果这篇【文章】有帮助到你,希望可以给【一心同学】点个赞,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点,如果有对【后端技术】感兴趣的小可爱,也欢迎关注❤️❤️❤️ 【一心同学】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】!