git流程全记录

多人协同开发中,经常会遇到这种情况:A在本地开发完成后,将代码推送到远程,这时候B的本地代码的版本就低于远程代码的版本,这时候B该如何从远程拉取最新的代码,并与自己的本地代码合并呢?

 

假设B是直接在本地的develop分支上写的新功能。

具体思路:先拉去一份最新的远程代码到本地,然后将本地两个版本的代码合并,最后发布一份新版本代码到远程。

1.添加修改到暂存区

git add .

2.提交修改

git commit -m "这次修改的信息"

3.查看远程仓库

git remote -v

​​​​​​​

拉下代码并提交的全过程

1.看到有一个仓库叫origin,于是我们需要从origin仓库获取最新代码

git fetch origin master:temp

意思是:从origin仓库的master分支获取最新代码,并放到新建的temp分支中

git pull 和 git fetch的区别是,pull下来自动就merge了,fetch可以选择是否merge【4】
2.查看temp分支与当前分支的不同

git diff temp

读懂git diff【2】

git status 可以查看修改的文件,git status --staged,关于git工作区、暂存区、版本库【3】

3.将temp分支和当前分支合并

git merge temp

4.如果要删除temp分支

git branch -d temp

5.将修改推送到服务端

git push origin vest:master

将本地的vest分支推送到远程origin库的master分支上

但是在的开发中,不会在本地的 develop下开发新功能,会新建一个分支开发新功能。这时如果B是在新分支vest上开发的新功能,想将vest分支提交到远程的develop分支上,该怎么做呢?

思路:先将远程的develop pull到本地的develop,(如果有人force push了则需要解决本地develop的冲突),此时本地的develop已经和远程的相同了。然后将本地的vest分支合并到本地的develop中,现在本地的develop已经是最新的了。然后将本地的develop 提交到远程的develop中。

// 建立新分支
git branch 新分支名字
git checkout 新分支名字
// 在新分支中写新功能
......//写完了
// 切换回develop分支
git checkout develop
// 将本地develop分支更新到最新(与远程origin库的 develop分支相同)
// 可以用 git fetch origin master:temp
//       git diff temp
//       git merge temp
// 也可以直接用用
git pull origin master
// 如果有人force push了,则需要解决冲突
......
// 将本地的vest 分支和develop分支合并
git merge vest
// 解决冲突
......
// 将本地的develop提交到远程的develop
git add .
git commit -m "新功能说明"
git push origin master

// 如果先commit,然后pull和解决冲突,则以后不需要单独commit
// 则需要将本次commit添加到到上一次commit中
git rebase --continue

git merge 分支名

merge的是版本库中的内容,所以当工作区中有新的代码没有commit到版本库中时,这时merge或者pull代码的请求会被git拒绝。这时有三种选择

第一种是提交工作区中的更新:

git add .
git commit "更新的内容"

第二种是放弃工作区中的修改:

// 将工作区中的代码回滚到最近的commit
git reset --hard

// 将工作区中的代码回滚到指定的commit【5】
// 查看commit的id
git log
// 回滚到指定id的commit
git reset –hard 8ff24a6803173208f3e606e32dfcf82db9ac84d8

第三种是将工作区中的修改放到一个Git栈,等pull以后,再恢复工作区的内容

// 将工作区中的修改放入Git栈,现在工作区中的内容是最近一次commit中的内容
git stash
// 合并服务端代码
git pull
// 将刚才暂存的内容恢复到工作区,如果有冲突则需要合并
git stash pop

参考文献:

【1】git远程分支与本地分支合并_loongshawn的博客-CSDN博客_git远程分支合并到本地分支

【2】用 diff 检查改动 | Learn Version Control with Git

【3】Git三大特色之Stage(暂存区)_段浅浅的博客-CSDN博客_git stage

【4】Git fetch和git pull的区别_Robin Hu的专栏-CSDN博客_pull和fetch区别

【5】git 回滚到之前某一commit_Bad Boy-CSDN博客_git 回滚commit

你可以在添加微信公众号:【务达】,这样可以第一时间接收文章。 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值