目录标题
gitbash与github交互
主要记录gitbash与github进行交互的流程及其中的细节,本人创建了两个github账号,以便于演示团队合作开发项目历程;本机端需要下载git,可搜索相关下载教程进行下载即可,另外需要注册两个github账号。文中所有master在实际操作中均用main,因为自2020.10起,github将因尊重种族问题,将启用main来代替master。
1. 推送
git push [别名] [分支名]
- 打开git,创建一个新的文件夹git-test,在文件夹里创建一个txt文件,在文件里随便写几个字,初始化(本地库)添加到暂存区,提交到本地库在github上创建远程库 **然后回到git终端,创建远程库地址别名,其中一般用origin作为远程分支的别名,也可以用其他的名子,这样后面操作可以直接使用别名,避免原始地址较长的缺点查看当前所有远程库地址的别名将本地库推送到远程库回到github查看,已经推送上去了
2. 克隆
git clone [远程地址]
首先回到上一层文件夹,新建一个文件夹git-test-1
回到github上复制克隆地址
回到git终端,进入到刚才新建的文件夹路径下,进行克隆
此时该文件夹下就有了上面推送到远程库的内容,并且已经初始化好了本地库,也创建好了本地库,也创建好了别名
文章内容肯定是一模一样
3. gitbash切换不同的github账号
为了讲解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凭据;还有一种方法就是如果将同一个公钥分别放到两个账户里,能否解决账户切换问题呢?方法很多,但是这种账号切换的情况在实际开发中很少遇见,所以就不追究太细了,掌握任何一种方法把问题解决了就行
4. 加入团队
在这里使用自己的 github 小号进行测试,将它拉入我的团队,首先进入到 github 大号(也就是创建远程库的那个号),进到之前创建的项目中去,点击 Settings
点击邀请成员,输入成员邮箱
之后登上小号的 github, 接受邀请
此时,进入到大号的 github 查看,就已经成为团队成员了
5. 团队成员推送
假设之前的克隆操作是 github 小号进行克隆的,那么现在小号(也就是团队成员)也可以对该项目进行修改,然后也可以推送到 github 上的这个远程库中,实现项目的共同开发。
在克隆的文件夹中(git-test-1),进入到test项目文件夹,可以有修改的权限
比如增加以下两行文字
然后增加到暂存区
提交到本地库
然后就可以推送到 github 的团队项目远程库中
然后到 github 远程库中查看
远程库创建者的 github 账号显示
团队成员的 github 账号显示
6. 项目拉取
操作步骤
- pull = fetch + merge
- git fetch [远程库地址别名] [远程分支名]
- git merge [远程库地址别名 / 远程分支名]
- 可以直接使用 pull 操作
- git pull [远程库地址别名] [远程分支名]
具体操作:
上面团队成员(小号)修改后进行推送,假设团队其他成员现在需要查看该项目,此时需要将项目从远程库中,拉取下来。这里假设是大号(远程库创建者)进行项目拉取
首先进入到项目本地库文件夹(就是大号创建的文件夹)的路径下
然后进行项目抓取
此时本地库的内容并没有变,抓取只是把远程的内容下载到本地,但是并没有修改本地工作区的文件
如要查看下载的内容,可以执行以下操作
想返回的话执行以下命令
分开操作的优点
确定下载的内容没有问题之后,就将远程的 master 合并到本地的 master
以上是将 pull 分开操作的,先执行的 fetch ,然后执行了 merge ,下面测试一下 直接使用 pull 进行一次性拉取
先自己重复一下 第四步 成员推送的流程,将里面内容改一下。
操作好之后,进入到 大号创建的本地库文件夹 路径下,用 pull 拉取下来
7. 协同开发时冲突的解决
比如:两个人都在修改同一个文件的同一个位置,先推送的人可以推送成功,后推送的人就推不上去(必须先拉取下来才能再推送),这就成为了一个冲突
举例
大号进行修改,然后推送到远程库
此时远程库的内容
然后 小号进行 修改,再进行推送,就会失败
解决办法
先执行 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的使用
版权归原作者 Tengfei_Y 所有, 如有侵权,请联系我们删除。