怎样注册网站,国内外包网站,怎么做网站超市,小白学网站建设与设计书实际开发项目使用到的分支:
main#xff1a;生产环境#xff0c;也就是你们在网上可以下载到的版本#xff0c;是经过了很多轮测试得到的稳定版本。 release#xff1a; 开发内部发版#xff0c;也就是测试环境。 dev#xff1a;所有的feature都要从dev上checkout。 fea…实际开发项目使用到的分支:
main生产环境也就是你们在网上可以下载到的版本是经过了很多轮测试得到的稳定版本。 release 开发内部发版也就是测试环境。 dev所有的feature都要从dev上checkout。 feature每个需求新创建的分支。 下面介绍一下一个新需求过来的git操作流程 1.从dev分支上checkout -b new-feature进行开发 2.开发完后经过自测没问题了准备发版 3.merge到release分支上进行发版并打tag 4.有bug就直接在release上进行修改改完再次发版打tag直到测试人员验证完毕 5.这时可以将release分支合并到dev上也可以删除掉feature分支了并等待通知是否将此功能上线发布正式版本也就是在正式服务器上运行如果上线那就merge到mainmaster分支当然了有可能需要将ip改为生产服务器的地址并打上一个official tag。 6.如果上线后发现有bug如果此时main分支已经又合并上新功能B了但是这个临时的版本又不想包含B的功能那么可以切换到上次的official tagcheckout -b一个hotfix分支进行bug修复hotfix分支要进行保留不能删除。测试没问题就可以发版了最后可以合并到main上。 一般的项目这套流程应该就足够了。所有的发版tag都会集中到releasemainhotfix分支上所有的需求都会从dev上拉取这样能保证代码是完整可用的是经过每次release合并过来的
指令及其含义
git checkout -b xxxgit checkout xxx是指切换到xxx用local区的xxx替换disk区文件-b意味着branch即创建新分支这条指令合起来意思是创建并切换到xxx。git diff查看暂存区与disk区文件的差异。git add xxx将xxx文件添加到暂存区。git commit将暂存区内容添加到local区的当前分支中。git push 将local区的LocalBranchName分支推送到RemoteHostName主机的同名分支。若加-f表示无视本地与远程分支的差异强行pushgit pull 同上不过改成从远程主机下载远程分支并与本地同名分支合并。git rebase xxx假设当前分支与xxx分支存在共同部分common该指令用xxx分支包括common在内的整体替换当前分支的common部分原先xxx分支内容为common-diversityA当前分支内容为common-diversityB执行完该指令后当前分支内容为common-diversityA-diversityB。git branch -D xxx不加-D表示创建新local分支xxx加-D表示强制删除local分支xxx。
工作流一 git clone remote// 到本地git checkout -b feature 切换至新分支feature 没有就创建修改或者添加本地代码部署在硬盘的源文件上git diff 查看自己对代码做出的改变git add 上传更新后的代码至暂存区git commit 可以将暂存区里更新后的代码更新到本地gitgit push origin feature将本地的feature分支上传至github上的git
如果在写自己的代码过程中发现远端GitHub上master分支代码出现改变
git checkout master切换回master分支git pull origin master将远端修改过的代码再更新到本地git checkout feature回到feature分支git rebase master把我的修改先都放在一边然后把master最新的修改拿过来接着在这个最新修改的基础之上再把我的commit尝试弄回去中途可能会出现rebase conflict手动选择保留哪段代码就相当于我们在最新的master分支上做了修改 这也是使用rebase而不是使用merge的好处git push -f origin feature把rebase后并且更新过的代码再push到远端github上由于做了rebase所以需要加上-f -f表示强行强行push把更新的代码合并到远程master分支里面pull request的意思是request项目的主人把我这个新的分支的改变给pull到这个项目里去。原项目主人采用pull request 中的 squash and merge 合并所有不同的commit
远端完成更新后
github删除个人远程分支feature本地切换到主分支git checkout master git branch -d feature删除本地的git分支git pull origin master 再把远端的最新代码拉至本地这时我们的本地仓库就又和远程一样了。
工作流二
远程仓库有两个master和test分支
git clone remote克隆仓库git checkout -b feature切换分支没有就会新创建并切换编写代码并提交本地仓库推送到远程test分支git checkout -b test origin/test意思是切换一个分支如果分支不存在就会创建并切换到test分支后面origin/test是指从远程test克隆下来并与本地test分支建立联系这时文件里没有新编写的代码。切换到feature分支使用git log查看提交历史记录记录以前提交的哈希值切换到test分支使用git cherry-pick 哈希值这时代码就同步过来了可以再次使用git log查看。git push到远程test分支同步到远程master分支如果此时远程master分支有更新需要切换到master分支使用git pull保证本地master分支是最新的然后使用git cherry-pick 哈希值这时代码就同步过来了可以再次使用git log查看再push到远程分支。
工作流三 git pull
本地修改代码远程也更新代码产生冲突使用git pull后需要手动mergegit add .git commit -m “合并冲突”git pushgit log --graph
缺点提交记录出现分叉出现很多奇怪的提交记录。
工作流四 git pull --rebase优化提交记录
现象提交记录出现分叉出现很多奇怪的提交记录。
业务场景
在本地分支完成了我功能的开发现在需要合并到test 分支上于是我的目标是在test 分支上执行git cherry-pick操作将我的代码检出到test上因为我要避免有人更新过test分支,所以我在此之前先执行了一下git pull 出现了一个Merge的vi窗口(过去我一直没注意 直接就wq出去 .了)其实这个就是导火索! vi窗口如下:
原因
git pull 其实是一个组合操作其会执行git fetch git merge (过去其实完全不知道) 因为 有git merge的存在所以最后的提交记录看起来就会很乱。
解决方案
使用git pull --rebase 来进行合并本地和远程分支。既可以完美解决这个问题! git pull --rebase 也是一个组合操作 其会执行git fetch git rebase 我们知道git rebase 就 是解决凌乱记录的一个大杀器所以可以完美的解决!
本地修改代码远程也更新代码产生冲突使用git pull --rebase origin test需要手动处理冲突 current change变为了远程意味着更新版本是以远程为基础的大的提交不会是含有本地每次小的提交。git add .git rebase --continuewq即可git pushgit log --graph 这样操作之后我们的提交记录就是非常干净的一条链路了! 补充
git log --graph更加清晰的结构查看log记录。