git操作大全

经过了整整一天的奋斗 , 总算是把困扰我很久的git搞明白了 , 赶紧记录一下 , 最常见的情况就是公司把你拉进已有的项目仓库 , 让你把某个分支的代码拉到本地进行开发 , 开发完了再上传到远程仓库的这个分支 .我今天研究的就是这种情况

码云注册账号 , 下载git全局配置邮箱账号这些就不讲了 , 这里主要讲git操作

一 ,自己在码云新建一个仓库(实际开发一般是公司给你仓库地址或把你拉进仓库) , 这里为了演示就自己新建的仓库

二 , 点击创建之后 , 点一下初始化readme文件

三 , 仓库默认只有master一个分支,里面有刚才初始化的两个文件,点击分支 1可以看到详情

 

 四 , 这个master分支是默认的主分支 ,你的boss一般不会让你直接提交代码到master(主分支),都是提交到另外一个分支比如dev分支,因为可能还有别的同事也在开发,boss会将你们的代码进行合并然后才提交到master

.

所以我现在新建一个dev分支 ,专门用来提交代码

五 , 刷新看到远程仓库有了两个分支 , master 和dev

现在两个分支里都只有两个初始化的文件 

现在我在dev分支上 , 上传一个图片

刷新看到dev分支有了这张图片, 而master分支没有

 

六 , 前面这些都是准备工作 , 创建了一个仓库 ,两个分支 , 区分了两个分支里的内容 , 实际开发中仓库和分支都是已有的 , 项目经理直接给你的 ,

你需要做的第一步是拉取某个分支的代码到本地 , 比如现在要拉取dev分支的代码到本地 , 先复制仓库地址 (这里不管在哪个分支复制的地址都是一样的,无所谓)

桌面 , 右键点 git bash here

 输入 git clone -b 分支名 仓库地址 , 按回车

跑完之后会看到桌面多了一个testwo文件夹 (就是仓库名) , 自动生成了一个.git本地仓库

打开文件夹看到里面有那张图片 ,说明我们拉的是dev分支的代码 

那怎么拉master分支的代码呢 ?  直接git clone 仓库地址 , 我现在把这个testwo改个文件名, 以免等会文件名重复 (如果说仓库里只有master主分支 , 你的项目经理并没有新建一个dev分支让你们用于开发, 就直接git clone 仓库地址, 默认拉的就是master分支的代码)

看到这次拉的代码里没有那张图片 , 说明拉的是master分支的代码

七 , 代码拉到本地后 , 就是最常见的操作了 : 本地代码改完后怎么提交到远程仓库 ? 远程仓库代码更新了怎么拉最新的代码到本地 ? 无非就这两种情况

打开桌面的本地文件夹 , 右键git bash here , 输入git status (查看仓库状态,是否有更改) , 显示 on branch dev  , 意思是本地现在在dev分支上 , 说明你拉了远程dev分支的代码到本地后, 本地会自动生成一个dev分支 (和拉的远程分支同名 , 如果你拉的master分支, 本地就生成一个master分支)

怎么验证确实在dev分支上呢 ?  输入git branch (查看本地分支) , 看到显示*dev , *表示现在正在的分支 , 括号里写的dev也表示现在正在dev分支

那怎么看到远程仓库的分支呢 ?   git branch --all (查看本地和远程的分支)

 绿色的是本地仓库的分支 , 红色的是远程仓库的分支 

第一行红色的remotes/origin/HEAD ->orgin/master 是什么呢 ? 这个就像一个指针,指向默认分支 , 表示默认分支是master 

怎么知道我们的本地仓库是否和远程仓库关联了呢 ? git remote -v (查看关联的远程仓库地址)

八 , 当你在本地dev分支中更新完代码后 , 怎么提交到远程仓库的指定分支中呢 ? (这里我并没有在本地再新建分支用于开发 , 而是直接就在dev分支里更改的代码 )

现在我在本地新建了一个txt文档 (模拟在本地更新了代码)

当我们在本地更新完代码之后 ,先把本地更改提交到本地暂存区

git checkout 分支名 (本地切换到某个分支)

git status (查看仓库状态,是否有更改)

git add . (添加本次所有改动到暂存区)

git commit -m "本次提交代码描述"  (将暂存区里的改动提交到本地的版本库)

这时候你本地的更改已经提交到本地仓库了 , 现在要再推送到远程的仓库 , 但一定要先拉取远程仓库最新的代码到本地之后 , 再推送你的更改到远程仓库 , 因为在你推送之前可能别的同事已经推送了最新的代码到远程仓库 , 你推送的时候本地代码不是最新的 , 直接推送就会把之前同事推送的那一次代码覆盖了  

现在先模拟远程仓库代码已经变化的情况(实际开发中就是你的同事提交了最新代码到远程仓库) , 我在远程仓库的dev分支上新上传一个图片

刷新看到远程dev分支上多了刚刚传的图片

好 , 现在远程仓库的代码已经变了 , 我们要拉取远程仓库的最新代码

git pull origin 远程分支名:本地分支名 (将远程分支 拉到 本地分支)

git pull origin 远程分支名 (将远程分支 拉到 本地当前分支)

git pull (将与本地当前分支同名的远程分支 拉到 本地当前分支)

此时我们用git pull 就行了 , 因为本地当前分支是dev, 远程分支也是dev (此时没有发生冲突, 后面会演示有冲突的情况怎么做 )

 这时候看到本地仓库已经有了之前远程仓库新传的图片, 说明现在本地是最新的代码了

现在远程仓库最新的代码已经拉到本地了, 并且没有冲突 , 我们就可以把自己本地的更新推送到远程仓库了

git push origin 本地分支名:远程分支名  (将本地分支 提交到 远程分支 , 如果远程没有这个分支会自动创建这个分支)

git push  (远程已有此分支并且已经关联到本地同名分支, 本地也切换到了此分支)

git push -u origin 远程分支 (远程已有此分支但未关联到本地分支)

我们用git push就可以了 , 完整写法就是 git push origin dev:dev

刷新远程仓库看到之前本地新增的txt已经有了

这时候一次完整的拉取代码, 提交代码就完成了 ,后面再更改提交就简单了 ,git status ,   git add .  , git commit -m " " , git pull  ,git push 就可以了

到这一套完整的流程就结束了 , 后面再更新代码都是固定套路了 , 但前面演示的都是最新代码拉下来没有冲突的情况 , 有时候你直接git pull拉到本地会发现有冲突 , 就是之前同事提交的代码拉到本地和你本地自己的改动有冲突 , 你两改了同一个文件的某个地方 , 这时候就要先在本地解决冲突 , 再push了

演示 : 我现在在远程仓库把新建.txt 改动了 ,提交了

这时候远程仓库中, 这个文件的内容已经变了 

 

然后我现在在我的本地代码也改了这行

好 , 你本地改好了 , 现在要提交到仓库 , 当你git pull的时候显示 CONFLICT 就是冲突的意思

 这时候打开你本地的新建.txt , 看到会有<<<<<<HEAD     ====== >>>>>

以中间那个 ==== 为分界线 , 前面的是你本地更改的 , 后面是远程仓库更改的 , 这时候需要你在本地解决冲突 , 看是保留你本地更改的还是保留你同事更改的 , 保留的留下 , 不保留的删掉就行,

比如我要保留我本地更改的 , 就把同事更改的删掉

再次git add .  git commit  git pull  git push

 刷新仓库看到仓库里的代码以我本地更改为准了 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值