git 团队开发分支管理

xiaoxiao2021-02-28  85

指令: git branch 查看分支git branch <name> 创建分支git checkout <name> 切换分支git checkout -b <name> 创建+切换分支git merge <name> 合并某分支到当前分支git branch -d <name> 删除分支git branch -D <name> 删除分支在没有合并分支的情况下 git log --graph --pretty=oneline --abbrev-commit  以图表的形式查看分支线git merge —no-ff -m “提交备注” <需合并的分支名> git add A/*  添加文件夹 git stash 将工作区修改的内容存储起来 显示为原先未修改的状态git stash list  查看stash 存储的内容git stash apply stash@{0} 恢复git stash drop stash@{0} 删除git stash pop 恢复的时候同时将stash内容删除 git push origin <name> 将该分支推送到远程分支git checkout -b <branch-name> origin/<name> 创建于远程分支相关联的分支git pull 把远程仓库的内容抓到本地 分支的不同获取的内容也不同git branch —set-upstream <branch-name> origin/<name> 指定本地分支与远程分支链接git branch --set-upstream-to=origin/<branch> <branch-name> 指定本地分支与远程分支链接 一般合并会提示 Fast-forward “快进合并” 就是直接把master指向dev的当前提交。 合并冲突
当两个分支中同一处被修改,在合并的时候就会引起冲突,git 会在文件中用<<<<<<,=======,>>>>>>标出不同文件的分支内容,修改后保存提交即可。 用带参数的 git log 可以查看分支的合并情况 $ git log --graph --pretty=oneline --abbrev-commit 分支管理策略
禁用Fast-forward         在合并的时候使用 Fast-forward 模式时,删除分支后会丢掉分支信息。         如果强制禁用Fast-forward模式,Git就会在merge时生成一个新的commit,这样从分支历史上就可以看出分支信息。 操作: $ git merge —no-ff -m “提交备注” <分支名> -m 合并的时候创建一个新的commit           具体原因是采用Fast-forward 模式时 是将master 指针直接指向dev分支的最新提交,并且commit ID 也是一样的 所以dev的分支信息就会丢掉;而采用--no-ff 模式,在合并的时候进行了一次 git commit 合并操作,commit id 也会不同,在分支历史上就能看到信息。 分支策略          在实际开发中,按照上面的分支策略图进行分支管理: 首先,master分支仅用来发布新版本,不能在上面干活。 Dev分支是测试工作的主分支,如果要发布一个版本 ,将dev合并到master就可以了。 开发的小伙伴们基于dev分支 分出自己的分支,时不时往dev分支合并就可以了。 bug分支
  情境:         当你正在dev上开发一个任务,需要两天才能完成,但是现在接到一个bug需要马上修复,但是工作区(开发的代码)才完成了一半,还没法提交,怎么办呢。 Git提供了一个stash功能,可以把当前工作区的内容存起来,等以后恢复继续工作。 $ git stash    将当前工作区修改的内容存储起来并恢复修改之前的状态 然后可以切到master修改bug $ git checkout -b issue-101 Switched to a new branch 'issue-101' 修改完提交 $ git add . $ git commit -m "fix bug 101" [issue-101 df0195f] fix bug 101 切换主分支进行合并 $ git checkout master $ git merge --no-ff -m "merge bug fix 101" issue-101 $ git branch -d issue-101 bug 修改完 到dev分支先进行改完bug的master 与当前dev的合并 $ git checkout dev $ git merge --no-ff -m "dev-merge-m" master 然后释放之前存储的内容 git stash list stash@{0}: WIP on dev: 8190e93 add dev $ git stash pop Auto-merging readme.md On branch dev 为什么要有这个存储功能,个人理解,如果在dev的分支中任务未完成 然后切到别的分支 你修改的内容在工作区还是会显示的。当然有人说可以将dev中的修改先提交了。这样不是不可以。严格意义上将提交代表你的代码已经完成了可以上传提交了。 所以用stash还是比较方便的 也可以在开发的不同阶段进行多次stash  多人协作
这里用Github 搭建远程仓库为例: 在github上新建一个仓库 然后将本地仓库与之关联 $ git remote add origin git@github.com:****** $ git push -u origin master 然后在GitHub中点击仓库的settings 在Options 中点击Collaborators  然后在搜索框中输入你要邀请的小伙伴的名字或者邮箱,然后等待小伙伴的同意,也可以直接将邀请链接直接发给小伙伴 小伙伴直接在本地新建仓库并克隆GitHub上的内容 小伙伴可以创建一个dev分支并上传到远程服务器上 $ git checkout -b dev //添加一些内容 $ git add . $ git commit -m “add dev” $ git push origin dev 现在小伙伴已经在远程仓库创建了一个分支 然后我在我本地的仓库执行如下: $ git pull remote: Counting objects: 3, done. remote: Compressing objects: 100% (3/3), done. remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (3/3), done. From https://github.com/********** * [new branch]      dev        -> origin/dev Already up-to-date. //会发现有一个新的分支 接着执行 $ git branch * master 看不到dev 分支,需要在本地创建一个与远程仓库对应的分支, $ git checkout -b dev origin/dev M       .idea/misc.xml Branch dev set up to track remote branch dev from origin. Switched to a new branch ‘dev' $ git branch * dev   master 然后我创建一些内容提交 没有什么问题 接着小伙伴去dev分支上执行 git pull 抓取我刚刚提交的内容出现如下问题 $ git pull remote: Counting objects: 5, done. remote: Compressing objects: 100% (1/1), done. remote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 Unpacking objects: 100% (5/5), done. From https://github.com/*****    0008c75..681dcf0  dev        -> origin/dev There is no tracking information for the current branch. Please specify which branch you want to merge with. See git-pull(1) for details.     git pull <remote> <branch> If you wish to set tracking information for this branch you can do so with:     git branch --set-upstream-to=origin/<branch> dev 根据提示执行 $git branch --set-upstream-to=origin/dev dev 使本地分支与远程分支链接 Branch dev set up to track remote branch dev from origin.
转载请注明原文地址: https://www.6miu.com/read-32925.html

最新回复(0)