主要记录gitbash与github进行交互的流程及其中的细节,本人创建了两个github账号,以便于演示团队合作开发项目历程;本机端需要下载git,可搜索相关下载教程进行下载即可,另外需要注册两个github账号。文中所有master在实际操作中均用main,因为自2020.10起,github将因尊重种族问题,将启用main来代替master。
git push [别名] [分支名]
git clone [远程地址]
首先回到上一层文件夹,新建一个文件夹git-test-1
回到github上复制克隆地址
回到git终端,进入到刚才新建的文件夹路径下,进行克隆
此时该文件夹下就有了上面推送到远程库的内容,并且已经初始化好了本地库,也创建好了本地库,也创建好了别名
文章内容肯定是一模一样
为了讲解git团队合作功能,本人使用两个github账号演示,但是由于只是使用了一台电脑和一个gitbash终端,因此涉及到切换账号的操作,因为大号需要本地端对应到远程端的大号,要对远程端的小号操作,则本地端需要切换到小号对应的用户名和注册邮箱。
1,git切换用户
(1) git config user.name 查看用户名,你注册github账号时给账号起的名子
git config user.email 查看邮箱,为你注册github账号时使用的邮箱
(2) git config --global user.name “xxx” 切换用户
git config --global user.email “xxx” 切换邮箱
以上过程执行完成后就已经切换账户了,一般就可以正常执行git命令,但是有时候在push的时候会出现以下错误:
此时可通过以下方法解决
方法1:
依次执行以下命令就可以正常使用
git config --global --unset http.proxy
git config --global --unset https.proxy
方法2.打开终端在终端中执行以下命令就可以了。
git config–global–addremote.origin.proxy""
方法3.若第一种方法输入命令不管用,可以尝试先输入下边命令,然后在执行第一种方法的命令。
git config–globalhttp.sslBackend"openssl"
git config–global–addremote.origin.proxy""
此时一般可以正常进行git push操作了。
如果账户实在是切换不过来,一直停留在原账户,那么可以通过更改本机端账户配置进行切换,此办法绝对可以解决,过程如下:
1.首先window+R进入window命令端口,输入control,进入控制面板->选择用户账户->Windows凭据,进入如下界面:
将里面的git凭据删除,然后进入gitbash界面进行git push操作,会提示你输入Token,从浏览器进入要切换的github账户,step1 在个人设置页面找到Setting,step2 选择开发者设置Developer setting,step3 选择个人访问令牌Personal access tokens,然后选中生成令牌Generate new token,step4 设置token的有效期,访问权限等,勾选repo,Step5 生成令牌Generate token,注意:记得把你的token保存下来,因为你再次刷新网页的时候,你已经没有办法看到它了,然后复制token粘贴至刚才提示的Token,完成gitbash到github的账户切换,之后使用git push来上传代码就是切换后的帐号了。
如果确认账户和邮箱都已经切换好了,并且所进入的工作空间也是对应账户的工作空间,依然push不上去,那么可能是网络或者bash更新不及时发生卡顿没有切换为目标账号,这时候可以再次执行一下方法1的命令。
个人一些理解:这里账户切换直接使用的是每个账户的个人令牌Token,并没有使用SSH免密登录,因此每次在Windows凭据中删除相应的github凭据,在gitbash进行切换账号重新push都需要添加一下对应账号的Token,此处是为了掩饰合作开发,弄了两个账号,一般在实际过程中,基本就是一个账号,直接SSH链接后,以后不再需要输入账号密码;另外,对于两个账号切换,还可以生成两个SSH,这样的话,每个账号对应各自的rsa公钥,就不用每次删除Windows凭据中的github凭据;还有一种方法就是如果将同一个公钥分别放到两个账户里,能否解决账户切换问题呢?方法很多,但是这种账号切换的情况在实际开发中很少遇见,所以就不追究太细了,掌握任何一种方法把问题解决了就行
在这里使用自己的 github 小号进行测试,将它拉入我的团队,首先进入到 github 大号(也就是创建远程库的那个号),进到之前创建的项目中去,点击 Settings
点击邀请成员,输入成员邮箱
之后登上小号的 github, 接受邀请
此时,进入到大号的 github 查看,就已经成为团队成员了
假设之前的克隆操作是 github 小号进行克隆的,那么现在小号(也就是团队成员)也可以对该项目进行修改,然后也可以推送到 github 上的这个远程库中,实现项目的共同开发。
在克隆的文件夹中(git-test-1),进入到test项目文件夹,可以有修改的权限
比如增加以下两行文字
然后增加到暂存区
提交到本地库
然后就可以推送到 github 的团队项目远程库中
然后到 github 远程库中查看
远程库创建者的 github 账号显示
团队成员的 github 账号显示
操作步骤
具体操作:
上面团队成员(小号)修改后进行推送,假设团队其他成员现在需要查看该项目,此时需要将项目从远程库中,拉取下来。这里假设是大号(远程库创建者)进行项目拉取
首先进入到项目本地库文件夹(就是大号创建的文件夹)的路径下
然后进行项目抓取
此时本地库的内容并没有变,抓取只是把远程的内容下载到本地,但是并没有修改本地工作区的文件
如要查看下载的内容,可以执行以下操作
想返回的话执行以下命令
分开操作的优点
确定下载的内容没有问题之后,就将远程的 master 合并到本地的 master
以上是将 pull 分开操作的,先执行的 fetch ,然后执行了 merge ,下面测试一下 直接使用 pull 进行一次性拉取
先自己重复一下 第四步 成员推送的流程,将里面内容改一下。
操作好之后,进入到 大号创建的本地库文件夹 路径下,用 pull 拉取下来
比如:两个人都在修改同一个文件的同一个位置,先推送的人可以推送成功,后推送的人就推不上去(必须先拉取下来才能再推送),这就成为了一个冲突
举例
大号进行修改,然后推送到远程库
此时远程库的内容
然后 小号进行 修改,再进行推送,就会失败
解决办法
先执行 pull 操作,此时处于冲突的情况
进入到项目文件里
把特殊符号都删除,改成我们需要的样子,就可以了
然后再推送到远程库中
此时的 github 远程库
注意:团队合作有两种,1,负责人创建一个仓库,邀请其他成员一起开发,其他成员在同一个仓库创建各自的分支,进行开发,然后由负责人查看确认合并到主分支上;2,负责人创建一个仓库,设置为public,不邀请其他成员共同开发,其他成员通过forck功能将负责人仓库里的所有文件和记录复制到个人github账户里,然后成员个人在自己的账户和本地端进行开发,开发完成,push到自己的远程账户,然后像负责人账户发起pull request请求,负责人在github账户端看到请求,可以确定是否通过该请求,实现成员内容到主项目的合并。
特别感谢以下博客:
git学习笔记之git与github项目交互
git如何切换用户(一图看懂 git bash方式)
解决fatal: unable to access ‘https://github.com/homebrew/brew/’:的问题
github系列(五)github token的使用