banner
banner
banner
NEWS LETTER

Git在项目中遇到的问题(实战)

Scroll down

前提

当前公司业务是用 rebase 合并代码,则需要修改 git 拉取的默认配置

  • 全局修改 pull 的默认配置 rebase:git config –global –add pull.rebase true
  • 查看修改成功与否:git config –global -l,找到 pull.rebase=true 则为成功

分析 studydemo 文件夹的树状图

1
2
3
4
5
6
7
8
9
10
11
- .git
- wxproject --- commit master
- pachong --- commit feature4
- maindian --- commit feature5
- h5project --- commit feature5
- first-demo --- commit feature2
- FAProject --- commit feature1
- background-1 --- commit feature5
- .hintrc
- README.md
- 备注.txt

解决合并分支的问题 — feature5 合并 feature4

时间线乱序

  • 方法一(命令行操作):
    1. 先撤回已提交记录:git reset HEAD^ // 这个只能撤回一条最新记录
    2. 贮藏未提交的记录:git stash
    3. 拉取当前分支的最新记录:git pull
    4. 弹出贮藏:git pop stash
    5. 重新提交: git commit -m “msg”
    6. 推送到远程:git push -f
  • 方法二(命令行+tortoiseGit):
    1. 撤回已提交记录: git reset HEAD^
    2. 重新提交合并上一次提交,推送强制覆盖已知
  • 方法三:
    • 如果没有什么删除分支之类的,合完,合并记录
    • 获取需要合并记录的 commit id:git log
    • 进入交互式的 rebase 模式: git rebase -i <commit ID>
    • 输入 i 进入可编辑模式
    • 将需要合并的提交记录从pick改为squash或者fixup
      • squash:将当前提交记录与上一提交记录合并,同时将提交信息合并为一个
      • fixup:将当前提交记录与上一提交记录合并,但不保留当前提交记录
    • 按 esc 输入:wq 退出
    • 修改合并后的 commit message: git commit –amend
    • 强制推送修改后的记录: git push –force

切分支一直提示:The following untracked working tree files would be overwritten by checkout…

  • 方法一: 保留未追踪的文件
    • git add .
    • git stash
    • 执行本来想执行的命令
  • 方法二:不想要这些文件,直接覆盖
    • git checkout -f 目标分支

遇到 index.lock 文件直接去当前目录的.git 下删除 index.lock

直接拉取远程的其它分支 — feature5拉取feature1

当主干分支有改变,但当前分支拉取的时候主干没变的情况

这里用 merge 时间先会乱所以用 rebase,本质就是合并主干代码到分支

  • 贮藏一下当前分支未提交的代码:git stash
  • 确认当前所在分支: git branch
  • 切换分支到主干: git checkout master
  • 拉取远程的主干: git pull origin master
  • 切换到要合并的分支: git checkout 分支名
  • 开始变基:git rebase master(当前分支变基主干,变基后的内容在当前分支中更新)
  • 如果变基有冲突,看提示那个文件,或者看 vscode 那个文件标红了,
    • 解决标红后 git add .
    • 然后 git rebase –continue
  • 查看日志: git log –pretty=oneline –graph(确认是否变基成功)
  • 尝试推送到远程分支,发现果然不行:git push -u origin 远程分支名(rebase 变基后,本地和远程的记录不同,所以推送不成功)
  • 强推到远程分支:git push -f origin 远程分支名
  • 弹出贮藏:git pop

各个分支已经推送到远程后,把分支合并到 master

  • 切换到 master 分支:git checkout master
  • 确保 master 分支,是最新记录:git pull origin master
  • 合并分支:git merge 要合并到master的分支
  • 查看日志: git log –pretty=oneline –graph(确认是否合并成功)
  • 推送分支到 master:git push origin master
其他文章
cover
Git知识
  • 24/10/30
  • 14:56
  • 前端工程化工具
cover
Git常用的命令
  • 24/10/30
  • 14:13
  • 前端工程化工具
目录导航 置顶
  1. 1. 前提
  2. 2. 分析 studydemo 文件夹的树状图
  3. 3. 解决合并分支的问题 — feature5 合并 feature4
    1. 3.1. 时间线乱序
    2. 3.2. 切分支一直提示:The following untracked working tree files would be overwritten by checkout…
    3. 3.3. 遇到 index.lock 文件直接去当前目录的.git 下删除 index.lock
  4. 4. 直接拉取远程的其它分支 — feature5拉取feature1
  5. 5. 当主干分支有改变,但当前分支拉取的时候主干没变的情况
    1. 5.1. 各个分支已经推送到远程后,把分支合并到 master
请输入关键词进行搜索