当初实习的时候git操作一直是单人作战,如今将多人协作的git操作做一下总结。错误之处,还请指正。

协作开发中git的使用流程

1. fork公司仓库代码到你的仓库
2. 在你的电脑本地新建文件夹(本地仓库),将你的仓库的代码下载下来
3. 在本地仓库新建开发分支进行代码编写,将编写的代码及新建的分支提交到你的仓库
4. 在你的仓库发起merge请求,将你的仓库中的开发分支合并到公司仓库的指定分支

1. fork公司仓库代码到你的仓库

这一步很简单,打开公司仓库,点击fork按钮后会跳转到你的仓库,并看到一份复制克隆过来的代码。

2. 在你的电脑本地新建文件夹(本地仓库),将你的仓库的代码下载下来

复制你的仓库的代码地址,在本地新建的文件夹中使用git命令

git clone 你的仓库

这样本地新建文件中就克隆了一份你的仓库代码,这份代码就是本地仓库。那么问题来了,如果公司仓库代码更新了,怎么保持你的仓库代码同步呢?思路是:将本地仓库公司仓库关联更新,在本地仓库通过git命令提交到你的仓库

git remote add upstream 公司仓库

接着执行如下命令查看此时本地仓库对应的公司仓库,就可以将两个仓库关联起来。

git remote -v

公司仓库更新了,执行如下代码,从公司仓库更新代码到本地仓库,并提交代码更新你的仓库

//执行前要切换到当前的本地仓库分支 git checkout 本地仓库分支
git pull upstream 公司仓库分支          //从公司仓库更新代码到的本地仓库
git push origin 本地仓库分支            //将本地仓库推到你的仓库
3. 在本地仓库新建开发分支进行代码编写,将编写的代码及新建的分支提交到你的仓库
git branch newBranch //新建本地仓库分支
git checkout newBranch //切换到本地仓库分支
git pull origin xxxxBranch //从你的仓库目标分支基础上copy代码
git push origin newBranch //将本地仓库新建的分支同步到你的仓库
git branch --set-upstream-to=origin/newbranch newbranch . //本地仓库分支和你的仓库分支建立追踪

接着就是在本地这个新建的分支上编写代码,完事后提交到你的仓库

//提交前记得git pull一下,防止冲突(你的仓库有其他人员参与开发的时候)
git add . //添加代码到本地
git commit -m 备注 //提交到暂存区
git status //查看暂存区是否存在commit的提交
git pull //提交代码到你的仓库
4. 在你的仓库发起merge请求,将你的仓库中的开发分支合并到公司仓库的指定分支

这步在github或者gitlab平台进行操作了,点击merge,就不多说了。

回退代码

//操作之前切换到要回退代码的分支
git log  //查看当前分支的提交记录
git reset --hard id //id就是当前提交的某条记录的哈希值,一般是yellow颜色字体(此回退只是本地仓库的回退)
git push origin HEAD --force //将本地仓库推送到你的仓库:让你的仓库代码和你本地仓库代码一样
//如果想恢复回退的代码,执行下面操作
git reflog //查看提交的历史记录(含有id)
// 接着重复上面的操作就OK了

删除分支

首先需要切换到其他分支才能对当下的分支进行删除!

//对本地仓库的分支进行删除
git checkout 其他分支
git branch -d 删除的分支
//如果删除不了,就强制删除
git branch -D 删除的分支
//到这里本地仓库分支就删除完毕了,如果想删除对应的你的仓库分支执行下面命令
git push origin --delete 你的仓库分支名称

合并代码冲突解决

首先git fetch upstream/远程分支名字
出现冲突之后,git merge upstream/远程分支名字
手动合并冲突的内容,首先合并代码并输入备注信息,然后按esc,再按shit+;,输入wq保存并退出
使用git add .和git commit -m "xxx" 提交
使用git push将改动提交到远程分支

问题

在工作中遇到过拉取分支添加新的文件夹提交代码,后来需要回退代码,导致无法切换分支,提示之前添加的新的文件夹需要删除。本人所在公司办公电脑是虚拟机,没有删除文件夹权限。请教大佬有没有好的办法(删除重新拉取除外)

但行好事 莫问前程~

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐