当前位置:   article > 正文

git checkout 远程分支_Git远程协作和分支

现在远程有main和work分支,如果我checkout到work分支,就会出来一个游离的head分支
54987e09e42cfa8975f1b130f32278cd.gif

点击上方蓝字关注我们吧~

一、远程基本操作

基本的配置远程仓库有两个命令:

  • git remote add origin git@github.com:ZXZxin/gitlearn.git 

  • git push -u origin master

这里先演示环境搭建,也就是和github上一个仓库远程关联起来,这里遇到了一些坑,记录一下:

53acf8ef778bf25dbdfde92631f78cf8.png
坑解决的两篇文章:
  • blog.csdn.net/yemoweili

  • blog.csdn.net/uotail/ar

  • jingyan.baidu.com/artic

普及:

  • 可以使用git remote show origin,查看详细的远程remote信息(注意origin是一个别名,不一定要这个名字)

  • git commit am '....'只会将已经纳入版本库的文件add并提交,新增的文件不会add

二、协作

一开始masterorigin/master一样。

1fd9b19fe19db2a476919b8cf4e60b6e.png

然后我们需要再调用一次git push来同步远程,这样id就会相同了。

e1d8ea752ca8a497fbc9107ab65de90a.png

解释:

git内部会自己维护origin/master这个分支,我们不能操作,但是可以执行git checkout origin/master,虽然这个命令不会报错,但是我们实际上只是切换到了提交的那个点(commit-id)的位置上,也就是和之前那个游离的状态一样。我们可以在这个commit-id位置上进行修改,但是切换的时候要先stash一下。

来看一下上面的原理和过程:

初始状态:

02e2ddf6a5a943366d1315227cbb873f.png

然后我们调用了增加或者修改元素,调用git addgit commit之后(这时候还没有push),就会变成下面这样: (这时候git会告诉我们masterorigin/master提前了一步)

fbeaa8ad257f3ba91dd1013d7638be13.png

然后我们调用git push,注意这个过程做了两步:

  • 将本地的内容push到远程了;

  • origin/master由上面的指向了

14fc3812e1a41ebf102c3a9d43071801.png

三、Git协作实战

模拟环境:

  • 有两个人协作,一个张三,一个李四,张三的仓库就是我们之前用的那个gitlearn,李四是直接从张三的远程仓库git clone下来的;

  • 然后我们再将张三的gitlearn和李四的gitlearn2都设置一下user.nameuser.email

李四先git clone下来:

3bb5a6d8630b4e9d97792eb1ccdd74be.png

然后将张三和李四的用户名和密码配置一下:

d0904954c9ed7e7902fb2a22eb14b7f0.png

现在我们在gitlearn添加一个c.txt文件,然后git push到远程仓库,然后在gitlearn2这边输入git remote show origin来查看区别:

246ae6f7fe9cad4dfdf661d5c07c49f9.png
remotes/origin/HEAD -> origin/master 啥意思呢?
在clone完成之后,Git 会自动为你将此远程仓库命名为 origin( origin只相当于一个别名,运行 git remote –v或者查看 .git/config可以看到origin的含义),并下载其中所有的数据,建立一个指向它的master 分支的指针,我们用 (远程仓库名)/(分支名) 这样的形式表示远程分支,所以 origin/master指向的是一个 remote branch(从那个branch我们clone数据到本地)
也就是 origin/master是用来追踪远程分支的。

然后我们在gitlearn2里面执行git pull,将远程的最新更新拉去过来。查看最新的更新信息。

ee35c1f43a52bcfb58682909fd078359.png

上图的过程:

8eab13f13a18635dc35752caf5abf832.png

下面展示会发生冲突的情况:

  • 张三先修改了a.txt的第二行,然后push到了远程;

  • 李四也修改了a.txt的第二行,然后也想push到远程,就会报错;

c348a5c2153863c64000b9dd121a96e7.png

此时李四要先git pull

现在展示李四的操作:

d2bc9d21cc0cf2297592ed2037d7f412.png

但是此时还不够,我们需要调用git add来标识已经解决了冲突;

d0f5c7c7291f81f689f7e5bbe44c9bc7.png
总结 git add的三个作用:
  • 将未追踪的文件(新建的文件)加入到暂存区;

  • 将已追踪的文件(修改的文件)加入到暂存区;

  • 解决完冲突之后,调用git add标识这个文件已经解决了冲突(git merge的时候)。

此时我们还需要将解决冲突之后的代码git push 到远程.

021ea74ce2c535045d099d391dc659dd.png

整个过程的流程:

83c97500ad080e699aa4f1c910e96f33.png
一般在 git push之前都要进行 git pull操作。 git pull = git fetch + git merge

git fetch会直接将代码拉到origin/master,但是和当前本地的master不会冲突。但是git merge就会产生冲突。

下面展示分别使用git fetchgit merge来操作:

先使用git fetch,不会产生冲突:

cdc8f3304caa6a1028b9ecf0fa57c072.png

接下来我们在李四这边使用git merge手动解决冲突并push

2fcb9fbbfe2bd6c3aabdffe04ea3206a.png

最后在张三也进行git pull即可。

关于远程git分支,远程(注意不是本地分支)通常有如下几种:

  • 1、master分支: 很稳定的分支;

  • 2、test分支: 测试分支;

  • 3、develop分支: 变化最频繁的分支;s

  • 4、hotfix分支: 紧急bug需要修复;

Java架构宝典

技术学习 / 经验分享

让自己每天都在进步

3f64378e2685df5d6a8b79a72a06d90e.png

▼往期精选推荐▼ 1.GitHub 热门:动漫生成器让照片秒变手绘日漫风,实测好用 2.Nginx 流控搞不好,背锅跑路少不了! 3.写这么骚的代码,不怕被揍么?

点亮 de411ccf722a4364ac8184edb86f4ff7.png,告诉大家你也在看 1bb697717babeeda920d27b76280a9b8.gif

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/637647
推荐阅读
相关标签
  

闽ICP备14008679号