赞
踩
上篇文章我们学习了Git教程——Git分支,这篇文章我们学习Git教程——GitHub、团队内协作、跨团队协作。
在之前的Git教程中,我们使用的是本地仓库,不需要联网也可以对我们的项目做版本控制,这样别人无法帮助我们修改项目代码。
今天我们来学习一个全球最大的代码托管服务平台——GitHub。
GitHub是一个代码托管服务平台,帮助开发者存储和管理其项目代码、追踪、记录并控制用户对其代码的修改,甚至可以把它当做一个网盘,用来存储任何东西。
在GitHub还可以查看或使用别人的项目代码。
这里我们就不详细介绍GitHub了。
使用GitHub的一个重要原因是方便我们共同开发项目或请别人帮忙开发项目,也就是项目的团队内协作或跨团队协作。
为了演示团队内协作和跨团队协作,我们创建了三个GitHub账号(lin0507X、Hero0507、BQKL66),如下图所示:
假设lin0507X和Hero0507是一个团队并且开发某个音乐软件,BQKL66是另一个团队协作lin0507X团队开发。
lin0507X作为项目组长,在GitHub平台中创建了名为MusicProject的仓库,如下图所示:
创建仓库后,我们在Code按钮获取仓库的HTTPS链接,该链接可以用来推送、拉取、克隆项目,如下图所示:
每次用到仓库链接时,都要输入那么长的链接,这显然是不方便的,这时我们可以为仓库起别名,仓库别名相关代码如下:
- git remote -v # 查看当前所有远程仓库别名
- git remote add 别名 仓库链接 # 创建仓库别名
- git remote remove 别名 # 移除别名
注意:
别名可以是任意的,但最好和项目相关的;
仓库链接错误书写时,别名也会创建成功。
示例代码如下:
- git remote -v
- git remote add MusicProject https://github.com/lin0507X/MusicProject.git
- git remote -v
- git remote remove MusicProject
这里我们创建的别名为MusicProject,如下图所示:
我们创建别名后,查看当前所有远程仓库别名可以发现多了两条数据,这两条数据(push/fetch)表示推送项目和克隆项目都可以使用MusicProject别名。
操作完删除别名后,请大家重新正确创建别名。
接下来我们开始推送项目到Github仓库,推送项目语法格式如下:
git push 别名/仓库链接 本地分支:远程仓库分支
当本地分支和远程仓库分支名一样时,可以只写一个分支名。
注意:推送项目时,要么用别名,要么仓库链接。
示例代码如下:
git push MusicProject master
如下图所示:
第一次推送时,会出现左边方框让我们绑定Github账号,点击Sign in with your browser,再点击Authorize git-ecosystem即可,点击后如下图所示:
new branch master->master,这说明了新建了一个分支,并从本地master分支推送到master分支。
注意:可能会因为网络原因导致推送失败,大家多试几次或隔段时间尝试才能成功推送。
我们可以在凭证管理器查看GitHub凭证,如下图所示:
可以看到,这时就有了Github凭证了。
这时我们查看MusicProject仓库,可以发现已经成功把MusicApp.txt文件推送上去了。
接下来演示修改MusicApp.txt文件后,再推送到GitHub,示例代码:
- vim MusicApp.txt # 编辑MusicApp.txt
- git status # 查看状态
- git add . # 添加所有文件到暂存区
- git commit -m '第一次修改后推送' # 提交到本地仓库
如下图:
注意:此时我们提交到本地库,接下来通过如下代码即可推送到Github仓库,示例代码如下:
git push -u MusicProject master
有人可能会说,怎么这次多了-u,-u表示默认,所以这里默认推送到MusicProject master分支上,那么下次直接可以使用git push即可推送到MusicProject master分支上。
推送成功后,Github仓库上的MusicApp.txt也发生了变化。
我们也可以从Github仓库上直接修改仓库中的文件,点击你想要修改的文件,点击红框,如下图所示:
这样就成功在Github上直接修改文件了,此时Github和本地仓库的文件内容是不一致的,所以我们需要在Github上拉取项目,拉取项目语法如下:
git pull 仓库别名/仓库链接 分支
示例代码如下:
git pull MusicProject master
如下图所示:
查看本地的MusicApp.txt文件,发现已经和Github的一样了,这样就成功拉取了Github仓库的文件并和本地的MusicApp.txt文件合并了。
注意:尽量不要在Github直接修改文件。
当我们在GitHub仓库并在本地仓库修改MusicApp.txt文件,在本地仓库拉取GitHub仓库MusicApp.txt文件会发送冲突,如下图所示:
可以发现拉取发生了冲突,这时我们打开MusicApp.txt文件可以发现多了<<<<、====、>>>>符号,此时我们只需要把我们需要的内容保留,不需要的删除,并重新提交到Github仓库即可,提交示例代码如下:
- git add . # 将目录下所有文件提交到暂存区
- git commit -m '解决冲突后提交' # 提交到本地仓库
- git push MusicProject master # 推送到Github仓库
lin0507X项目组长创建好了音乐软件初始模板了,此时组员Hero0507可以将模板MusicProject项目克隆到本地了,克隆项目语法格式如下:
- git clone -b 分支名 仓库链接 # 克隆制定分支
- git clone 仓库链接 # 克隆默认分支main
注意:这里演示Hero0507组员的操作,所以需要把凭证管理器中Github凭证删了,并且git也要换成Hero0507账号。
这里我们在桌面创建了名为Hero0507-MusicProject文件并用git打开,示例代码如下:
git clone -b master https://github.com/lin0507X/MusicProject.git
如下图所示:
这样就克隆成功了,但有人会问,不直接用pull拉取项目吗,我们知道pull拉取项目是在git和Github建立联系后才能拉取,现在这个是Hero0507账号,还没和Github建立联系,如下图所示:
报错告诉我们对接github数据失败。
注意:克隆下来的项目,会自动创建别名origin,如下图所示:
接下来我们把MusicApp.txt修改并提交到本地仓库,示例代码如下:
- vim MusicApp.txt
- git add .
- git commit -m 'Hero0507第一次提交'
接着推送到GitHub仓库,如下图所示:
可以发现push失败了,这是因为Hero0507还没添加到GitHub仓库项目成员,没有权限推送到Github仓库。
上面的push操作需要属于Hero0507的第一次推送,所以会出现让我们把Git和Github进行绑定,在绑定之前要把浏览器登录的Github账号换掉,这里我们换成了Hero0507的账号。
由于Hero0507不是MusicProject项目的成员,所以需要lin0507X邀请Hero0507为项目成员,如下图所示:
点击Pending Invite的复制按钮,就会出现一个链接,这个链接就是邀请函链接,只要Hero0507打开链接并点击Accept invitation即可成为项目成员,点击后,Hero0507就可以看到MusicProject仓库内容并且可以推送内容上去,这时Hero0507就可以推送成功了,如下图所示:
在开发的过程中,遇到了一些问题,需要请另一个团队BQKL66帮忙解决,由于BQKL66是团队外的,所以需要使用fork将项目保存在BQKL66自己的仓库,如下图所示:
打开Github项目的链接,然后点击右边的Fork按钮后,如下图所示:
注意:需要去掉Copy the main branch only的勾选,否则只Fork了main分支。
点击Create fork即可Fork项目,如下所示:
这样就BQKL66就成功forked项目了,Fork项目后,我们可以克隆到本地后修改文件,再提交到Github仓库,也可以直接到Github里面修改,这里我们为了方便,直接在Github修改,如下图所示:
注意:这样只是在BQKL66的Github上修改了文件。
接下来点击左上角的Pull request,再点击New pull request后,如下图所示:
在点击Create pull request之前要先确定好项目的分支,如上图1、2红框所示,再确定红框3的内容。都确认无误后,点击Create pull request后,继续点击create pull request即可。
点击后,在lin0507X的Github项目点击pull request,如下图所示:
点击红框2后,点击Merge pull request,再点击confirm merge即可,这样就成功把lBQKL66修改的内容合并到lin0507X里面了。
好了,Git教程——GitHub、团队内协作、跨团队协作就讲到这里了。
公众号:白巧克力LIN
该公众号发布Python、数据库、Linux、Flask、自动化测试、Git、算法、前端、服务器等相关文章!
- END -
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。