团队开发,优雅的使用工具 + 命令行的配合着进行git操作
1.背景
已经手把手教同事很多遍操作进行git的操作,可能是由于没认真记笔记 or 真英语不行,每次提交PR代码或者遇到git上的一些bug都要进行询问,并手把手的帮他解决当前的问题,我说你遇到git不必怕,干就是了,宗旨就是不要干掉远程别人的代码,然后当前在你的本地的项目的代码可以完美的运行功能就OK了,之前我踩过比你严重的坑都遇到过,直接写一下遇到的项目中遇到的问题吧。
2.自己出现的bug问题
直接上之前遇到的在公司项目使用的管理平台是tfs,我也不是很懂怎么合分支出现的bug 我当时用的是 github 出品的桌面版工具 github desktop,在合并解决冲突的时候,出现了文件丢失的情况
出现的原因如下:
-
因丢失的那些代码从未提交过上gitLab
-
处理冲突文件时,可能不小心点到某按钮导致
-
丢失的代码也未做过备份,也未提交过master的分支上
如何解决?参考文章:# 本地代码丢失,如何找回未提交过的代码,踩坑日记 git代码管理
看了下文章,git会在.git这个隐藏文件夹下面 /object 会生成一些文件,并以两个字符串即'数字+字母' or '字母+字母' 可能还是 '字母+字母的组合',里面的文件是一些加密的文件
通过以下的bash命令找到文件所对应的内容:
git cat-file -p 文件夹名文件名
一个文件一个文件找应该比较慢,因为对读文件夹名称及读对应的文件名不熟悉,我觉得有个更方便的方法应该是用powershell应该可以做到多条进行读取,读对应这个文件夹的名称 + 文件名,遍历即可。
3.如何创建文件夹并关联远程仓库和创建本地仓库,以下两种方式
第一种方式
第一步:基于master分支并创立了本地分支和远程分支(但是未推送并不会在远程创立分支)
# 初始化仓库
1. git init
# [https...]项目所在远程仓库地址(不是远程分支名称,而是仓库地址)
2. git remote add origin [https....]
git remote add origin [仓库名称]
# 拉取远程分支到本地,fetch origin(拿来)
3. git fetch origin master(dev是你要拉取的远程分支名称)
# 在本地创建dev分支并且切换到该分支
4. git checkout -b createFollow(本地分支名称)
# 拉取分支到本地
5. git pull origin master(远程分支名称)
第二步:推送代码到远程并创建分支,可采取以下两种方式的其中一种
1).
# 添加文件到暂存区
git add .
# 推送仓库分为createFollow
git pull origin createFollow
2).
# 强制推送到远程分支并建立远程分支
git push --set-upstream origin znn
如图所示,分支就已经set up 从origin(源文件,远程仓库)
第二种方式
如图所示
tips:要理解上面的相关内容为什么可以这样子操作,弄懂下面这篇文章基本理解:
# 细读 Git | 弄懂 origin、HEAD、FETCH_HEAD 相关内容
4.git 遇到eslint不给提交给远程怎么办?
可以参考下以下完整的项目花裤衩大佬的后台管理系统下的 .eslintrc.js文件
"vue/no-unused-components":"off",//当存在未定义而未使用的组件时,关闭报错
"no-unused-vars":"off"//当存在未定义而未使用的组件时,关闭报错
5.怎么合并代码并解决冲突
步骤如下:
工具方案进行merge
- 最简单就是用github desktop,熟悉工具的人应该都知道这个界面,点击工具中间的按钮,点击弹出界面最下方有一个很长的按钮 choose a branch to merge into 分支名称,中文的意思是合并你选择的一个分支到你这个分支下。
- 选择完上面的分支 并点击下方长按钮, 下方会有'1 conflicted file' 即有1个冲突的问题,当你合并master分支到testGitfollow分支上 ,点击相应的分支进行合并,并点击下方的create a merge commit,就完事了,解决冲突,通过github desktop + vscode配合着一起使用
- 看图,在vscode编辑器里面,HEAD是当前分支这片代码的内容,下方master就是来源的分支,即所需要merge的分支 用了 <<< 和 === 和 >>> 区分,相关的符号如下解释:
- <<<代表 当前分支
- ===代表 分隔符
- <<<代表 来源分支,即要合并的分支
4. 根据里面代码 我们可以点击上方的Accept Both Change 即可合并了代码了,合并完,回到github desktop,发现后面按钮变绿了,再点击 continue merge
- 最后一步在主界面点击push origin
- 等操作的loading滚动完就大功告成了。
git命令方案进行merge(git bash)
如何test1分支的代码合并test2分支的代码?
tes1分支
git add README.md
git commit -m 'test1'
git push origin test1
- 拉取要合并分支的代码
git stash # 查看下test1分支
git checkout test2
git pull
- 切换到test1分支,并合并test2分支
git checkout test1
git stash pop
git merge test2
- 解决冲突(直接打开vscode的项目 有对应的文件名冲突,解决冲突方式和上方方式工具方案相同)
解决完冲突
git push origin test1
这就大功告成了
6.如何回退版本
使用到的指令
git log----查看提交记录
git log --pretty=oneline----查看提交记录简略信息
git reset --hard HEAD^----回滚至上一个版本,可丢弃暂存区修改
git reset --hard 提交的id-----回滚至指定版本
参考文章
7.如何删除远程分支
# 查看远程分支,上方的是本地的分支,下方的查看的是远程的分支(下方的会有相应的颜色)
git branch -a
# 切换到master分支,应该是master分支才有权限去删除对应的分支
git checkout master
# 删除远程分支 后面new_a是分支名称
git push origin --delete new_a
有时候有可能要输入账号和密码,输入即可
8.git常用指令以及提交前缀
git常用指令
- git init-------初始化一个仓库
- ssh-keygen -t rsa -C "youremail@example.com"-------生成ssh公钥
- git add . ------添加文件到暂存区
- git commit -m '提交说明' -----提交暂存到当前分支
- git clone 项目地址 ----从远程库克隆项目
- git remote add gitee2 git@gitee.com:divhub/ErJieDuan.git ---关联一个远程仓库
- git branch-----命令会列出所有分支,当前分支前面会标一个*号
- git remote -v -----查看远程仓库
- git remote remove origin -----删除远程仓库
- git push 远程分支名 master -----提交本地分支到远程
- git pull 远程分支名 本地分支名 -----拉取分支
- git push -f gitee2 master -----强制提交覆盖远程分支
- git config --global user.name "***" ----本地用户名
- git config –-global user.email "*****"-----本地邮箱
- git config user.name -----查看用户名
- git config user.email -----查看邮箱地址
- git branch -a-----查看所有分支
- git branch -d 分支名-----删除一个本地分支
- git branch --v -----查看本地所有分支对应的远程分支使用命令
- git branch --set-upstream-to=origin/dev dev 本地分支关联远程分支
- git branch -help -----查看命令行参数
- git checkout 分支名-----切换到某分支
- git log----查看提交记录
- git log --pretty=oneline----查看提交记录简略信息
- git checkout -- 文件名-----丢弃工作区修改
- git reset --hard HEAD^----回滚至上一个版本,可丢弃暂存区修改
- git reset --hard 提交的id-----回滚至指定版本
- git rm ------删除文件
- git checkout -b 分支名 ------创建一个分支并切换到该分支
- git merge 分支名-----合并指定分支到当前分支
- git merge --abort -----取消合并分支
- git config -l -- 查看现在的git环境详细配置
- git status --用于查看在你上次提交之后是否有对文件进行再次修改。
- git fatal: 拒绝合并无关的历史
- 解决方法是:允许其合并历史。只需要在分支名后加上:--allow-unrelated-histories 即可(注意是两个中划线);
git提交前缀
- build:表示构建,发布版本可用这个
- ci:更新 CI/CD 等自动化配置
- chore:杂项,其他更改
- docs:更新文档
- feat:常用,表示新增功能
- fix:常用:表示修复 bug
- perf:性能优化
- refactor:重构
- revert:代码回滚
- style:样式更改
- test:单元测试更改
转载自:https://juejin.cn/post/7148125135206088717