一般都在test或dev 开发分支上提交自己代码,代码和别人冲突需要解决代码冲突。
一个项目两个人前端,一人负责一个页面,一般就一个dev分支,上传自己的代码,冲突比较少。
一个项目多个前端,一人负责多个模块,或修改多个bug,一般拉取的test分支,自己会在创建一个自己单独分支,没有问题之后在合并test。
正常情况下切换 Git 分支时,编辑器中的代码会跟着切换为当前分支对应的版本。
Git 分支本质是不同的代码版本线,切换分支时,Git 会将工作区(编辑器加载的文件)的内容替换为目标分支的代码文件状态,所以编辑器里显示的代码会同步变化。
1.克隆代码到本地
克隆前需确保本地已安装 Git(可通过 git --version 检查,未安装需先下载安装)
不要直接下载ZIP之类的包,可以下载代码使用,但是后期拉取,提交代码无法进行操作。
需要有git文件
在自己创建的项目文件夹中使用命令工具操作
git clone <远程仓库地址>
选择HTTP地址链接
git clone github.com/username/re…
克隆成功后,代码就拉到项目文件夹了
2.将本地代码导入 Sourcetree(初始化本地仓库)
-
打开 Sourcetree,点击左上角 文件(File)→ 新建仓库(New Repository) 。
-
在弹出的窗口中:
- 源路径(Source Path) :选择你本地代码所在的文件夹。
- 仓库类型:默认选择
Git。 - 勾选 创建仓库时初始化(Initialize this repository with a README)
- 点击 创建(Create) ,此时本地代码文件夹会被初始化为 Git 仓库(生成
.git隐藏目录)
-
推送失败提示 “无权限” :检查远程仓库地址是否正确,或账号是否有读写权限(HTTPS 需输入正确账号密码,SSH 需配置公钥到远程)。
-
远程仓库已有文件冲突:首次推送前,若远程仓库有初始化文件(如 README、LICENSE),需先执行 拉取(Pull) 合并远程代码,再推送。
3.使用可视化工具拉取,提交代码
每天拉取下最新代码再进行开发,提交代码前再拉取下代码,然后进行提交。
先创建自己分支,避免与其他人发生代码冲突。
新建结果显示,切换到自己分支
这只是在本地建了一个分支,并未同步到远程git上。
进行推送,同步到远程仓库。创建好不要先拉取代码,先推送上去。
提交自己写的功能模块代码
选择需要提交的文件
在下方的 提交信息(Commit message) 输入框中,填写本次提交的描述(例如 “修复 XX 功能 bug”)
点击 提交(Commit) 按钮,将代码提交到本地分支。
点击远端,打开远程仓库
点击命令行,弹出命令框,输入命令进行操作
4.报错内容:
1.git -c diff.mnemonicprefix=false -c core.quotepath=false --no-optional-locks checkout main --progress src/views/index.vue: needs merge error: you need to resolve your current index first
错误提示你当前的工作区存在未解决的合并冲突(needs merge),因此无法直接切换到 main 分支。需要先解决这些冲突
打开冲突文件(即上述 index.vue),寻找冲突标记(<<<<<<< HEAD、=======、>>>>>>> 分支名),手动编辑文件保留正确内容,删除冲突标记。
例如:
vue
<<<<<<< HEAD
// 当前分支的代码
=======
// 待合并分支的代码
>>>>>>> some-branch
编辑后保存文件。
标记为已解决并提交
解决冲突后,将文件标记为已解决:
bash
git add src/views/index.vue
然后完成合并提交(如果是在合并过程中产生的冲突):
bash
git commit -m "解决合并冲突"
2.git -c diff.mnemonicprefix=false -c core.quotepath=false --no-optional-locks branch -D gt error: cannot delete branch 'gt' used by worktree at 'D:/xiangmu/cc'
当要删除一个分支时,报错删除的分支xx正在被一个工作区(worktree)使用,具体路径是 D:/xiangmu/cc。Git 不允许删除被工作区引用的分支,以避免数据丢失。
先进入 `D:/xiangmu/cc` 目录,将主工作区切换到非xx 的分支(比如 `main` 或 `master`):
bash
```
cd D:/xiangmu/cc
git checkout main # 切换到一个存在的其他分支
```
回到任意工作区,删除 `gt` 分支
```
git branch -D xx
```
3.git -c diff.mnemonicprefix=false -c core.quotepath=false --no-optional-locks fetch --prune --no-tags origin remote: Verify fatal: Authentication failed for 'xxxxxxxx.git/' warning: use of unencrypted HTTP remote URLs is not recommended; see https://xxxx for more information. From http://xxxx a01ebd50..4aea0e8a test -> origin/test b747baf0..920d5f23 test-ww -> origin/test-wtest-yl2 -> locks pull origin test From http://xxxx * branch test -> FETCH_HEAD warning: in the working copy of ''src/views/Bndex.vue', LF will be replaced by CRLF the next time Git touches it error: Your local changes to the following files would be overwritten by merge: src/views/index.vue Merge with strategy ort failed.
拉取代码时,当本地文件有修改,且远程同文件也有更新时
解决方式:
用 stash 将本地修改暂存起来,让工作区回到 “干净” 状态:
git stash save "暂存本地修改:/index.vue"
在拉取代码,此时工作区无本地修改,可以正常拉取远程更新:
bash
git pull origin test
- 拉取优先:提交前必须拉取(Pull)最新代码,确保本地分支与远程同步,减少冲突概率。
- 冲突处理:若拉取后出现冲突(文件显示为红色 “冲突” 标记),需先在 “工作副本” 中打开冲突文件,手动编辑解决冲突(保留正确代码,删除冲突标记
<<<<<<<=======>>>>>>>),然后重新暂存、提交、推送。 - 分支隔离:确保在正确的分支提交,避免误提交到其他分支(如
main/master分支)。
5.需要拉取组件库
如:主项目root已克隆到Sourcetree,现在需要克隆组件库放在主目录下,步骤如下:
1.新建一个Clone,仓库类型这一栏是远程线上的git项目地址xxxxx.git.
2.下面框是本地项目地址,将你需要放入的组件,先创建一个新的文件夹,里面必须是空的。 如:root\src 下面要放组件库MH_Components,先建立一个空文件夹,然后选这个文件夹地址。
3.最后一个框就写MH_Components 你这个组件库名字。
4.点击克隆之后等待代码拉取成功,不用担心下载的代码会再生成一个MH_Components文件夹,代码会直接拉取到你建立的MH_Components文件夹中
5.建立分支,拉取代码之后,将自己分支推送到线上,后面就可以开发了,把自己写的代码写完推送。
6.每天拉取下代码,有代码冲突解决下,继续开发,后面推送到分支上。
6.命令行
执行以下命令,将本地未提交的修改暂时存储起来。它会显示工作区的状态,其中包括冲突文件列表
git stash
安全拉取远程更新,因为本地冲突文件已被暂存
git pull origin dev
恢复暂存的本地修改并解决冲突.将之前暂存的修改恢复到工作区:
git stash pop
手动编辑保留需要的代码,删除冲突标记(<<<<<<<、=======、>>>>>>>)
<<<<<<< Updated upstream # 远程分支的代码
...
=======
... # 你的本地修改
>>>>>>> Stashed changes
保存文件后,标记为已解决冲突
git add src/views/index.vue
冲突解决后,提交合并后的代码
git commit -m "合并远程分支,并解决冲突"
Git 的合并提交信息编辑界面(默认使用 Vim 编辑器),需要填写合并提交的说明后完成提交,或取消合并
-
进入编辑模式:按键盘上的
i键(小写),进入 Vim 的插入模式(左下角会显示-- INSERT --)。 -
填写提交信息:在编辑区域输入合并的原因,例如:
plaintext
Merge branch 'test' to resolve conflicts(可根据实际合并目的填写,也可保留默认提示信息)
-
保存并退出:
-
按
Esc键退出插入模式(左下角-- INSERT --消失)。 -
输入
:wq(冒号 + wq,小写),然后按回车键。w:保存文件;q:退出编辑器。
-
取消合并(放弃本次合并)
如果不想提交这次合并,可直接退出且不保存:
-
按
Esc键确保退出插入模式。 -
输入
:q!(冒号 + q!,小写),然后按回车键。q!:强制退出且不保存修改,会取消本次合并操作。
一套流程:
先将本地修改暂存,拉取远程代码后,再恢复暂存的修改并解决冲突
# 暂存本地修改
git stash
# 拉取远程 test 分支最新代码
git pull origin test
# 恢复暂存的修改(此时可能需要解决冲突)
git stash pop
# 解决冲突后,提交合并结果
git add .
git commit -m "合并远程test分支并解决冲突"
提交本地修改后合并,若本地修改需保留且可独立提交,先提交再拉取:
# 提交本地修改
git add src/views/xxxx
git commit -m "本地修改:xxx功能"
# 拉取远程代码(可能需要解决冲突)
git pull origin test
# 解决冲突后再次提交
git add .
git commit -m "合并远程test分支"
创建一个分支用于发布线上版本测试用
当线上代码仓库有测试分支,那么为了防止提交或发布研发代码。本地建立测试分支,进行发布测试代码。
新建分支:标注好测试分支名称
切换到测试分支,获取下
点开远程也就是线上
选中测试分支右击 选择检出 test分支
会多出一个分支
切回刚才开始创建的测试分支,切到测试分支之后,点击刚才检出生成的分支test,右击选中合并test至当前分支。这样test线上分支代码拉取下拉,就可以打包发布了。