参考:https://blog.csdn.net/zl1zl2zl3/article/details/94019526
应用场景:
一、开发分支(如test)合并到master分支上。
如test分支合并到master分支
git checkout test 切换到test分支
git pull 提交本地更改
git checkout master 切换到master
git merge test //把test内容合并到master
git push 即可推送到master
二、master有更改
当master有更改
git checkout master
git pull
git checkout dev
git merge master
git push -u origin dev
问题出现
如果系统中有一些配置文件在服务器上做了配置修改,然后后续开发又新添加一些配置项的时候,
在发布这个配置文件的时候,会发生代码冲突:
error: Your local changes to the following files would be overwritten by merge:
protected/config/main.php
Please, commit your changes or stash them before you can merge.
如果希望保留生产服务器上所做的改动,仅仅并入新配置项, 处理方法如下:
git stash
git pull
或者放弃本地修改:直接采用远端:
git reset --hard
git pull
出现:error: The following untracked working tree files would be overwritten by merge:
src/pages/ai/tableToExcel.ts
Please move or remove them before you merge.
方式一:假设你有安装git的工具。当然是图形化工具,比方tortoiseGit。你能够通过这些工具,选中你的project目录,右键cleanup。
方式二:通过命令行。你直接运行git clean -d -fx就可以。可能非常多人都不明确-d,-fx究竟是啥意思,下一篇关于git的文章会介绍下git clean相关的东西。
d :删除未被添加到git的路径中的文件(将.gitignore 文件标记的文件全部删除)
f :强制运行
x :删除忽略文件已经对git来说不识别的文件 (新修改的没有被跟踪的文件)
1 首先,在git中配置用户名和邮箱。在Git Bash中输入如下:
git config --global user.name "xxxxxxx"
git config --global user.email "xxxxxxx@XX.com"
2 克隆分支
整理好git后,开始克隆,打开SourceTree开始克隆。具体为点击“克隆/新建”,输入相应的源路径/URL,之后输入用户名和密码即可进行,在克隆的地方可以查看克隆的文件。
3 新建分支
在克隆的文件夹下,新建自己的分支,此分支是基于刚克隆项目的分支,如上面克隆的分支是master,此分支是在master下生成的分支。例如为test。
(
*******输入的分支名字,且必须分支选择为remotes下origin下develop分支*****
)
4 修改后commit
在创建分支后,对于自己的修改只是自己分支的修改,修改后,进行commit。
commit前为红色,commit后为绿色。成功最后面显示success。
commit后把自己创建的分支提交push上去。
通过修改后,提交结果,Push到服务器,让测试人员进行测试。Push时一定记得是Local和Remote相同,一定不要成develop,否则就覆盖了。
建立完分支后,可以去网站查询。
5 打开编辑
可以用sublime_text打开克隆的项目,具体如下。app为模板项目,不需要修改。需要修改的地方static下src目录的文件。
6 切换分支
用TortoiseGit-》Switch/Checkout。进行切换即可。
7 查看分支
查看远程分支 git branch -a
查看本地分支 git branch
8 删除分支
删除远程本地分支,用Git Bash去处理。在工作的地方Git Bash Here
之后输入,git branch -r -d origin/branch-name(可以不执行)
和 git push origin :branch-name
提示输入用户名和密码,即可完成远程删除操作。(删除了远程分支,本地分支仍然存在)
删除本地分支 git branch -d 分支名(即可删除)
注:该分支不在使用,使用时无法删除该分支。
此时输入git branch -D test_feature2016zhouy ,即可完成删除。
9 问题以及解决方案。
you need to resolve your current index first。因为产生了冲突。故需要回退到合并前。
解决方案如下:
git reset --merge
10 git出现文件状态图标不显示
注册表
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers这一项。
修改tortoise相关的名称(如加一个.前缀,并加数字)。之后重启explorer.exe即可。
11 Chrome出现
net::ERR_CONNECTION_REFUSED
在进入内网,输入用户名和密码即可。
11 Please, commit your changes or stash them before you can merge.Aborting
git reset --hard
12 Please move or remove them before you can merge.Aborting
git clean -d -fx ""
13 git无法克隆,提示文件名太长,可以克隆,但无法checkout。
方法一、设置 git config --global core.longpaths true,即可
方法二、只需把这个文件名进行赋权限即可。(即你没有操作这个文件的权限)
14 git分支强制推送
git push -f origin master
注释: origin
远程仓库名, master
分支名,-f
为force,意为:强行、强制。
15 如果无法推送到指定仓库,去sourceTree查看设置,参考远程仓库是否正确。
16 git合并说明。
如果想合并ma分支到zhou分支,则只需切换到zhou分支,在ma分支点击右键,之后选择合并ma至当前分支。如下图
17 git解决冲突说明(ma分支到zhou分支)。
如果git在合并时,出现 冲突,让你工作副本中去解决,按提示去消除。
如果,解决冲突-》选择 使用“我的版本”解决冲突,则此时使用的是自己切换的版本,即zhou版本,即该文件夹,不改变。否则,选择”使用他人版本“来解决,则此时使用的 是 ma的版本的那个文件(testzhou.txt文件)。(解决重点在下面)
解决方法:
zhou分支上有:
// 老接口lodInterface
url: "lodInterface",
//
下面还有很多新的东西:
that.test();
ma分支上有多余的:
mamamamammdmdmddddd---
mamamamammdmdmddddd---
mamamamammdmdmddddd---
mamamamammdmdmddddd---
新接口:
url: "newInterface",
在合并的时候,按上面的操作,到有冲突的时候,下面真正开始解决。看到右下面有很多块。就是不同的区域块。
上面老接口为合并的zhou分支,下面url
url: "newInterface",为ma分支中的新的内容,如果点击“放弃Hunk”,则保持 zhou分支的
// 老接口lodInterface
url: "lodInterface",
//
而不添加ma分支的内容。
可以去编辑器,直接操作,添加该添加的内容,去掉该去掉的内容。
整理成
最后保存,点击添加即可。