文章目录
一、IDEA中git log中文乱码
- 在IDEA中“File”——》“Settings”——》“Tools”——》“Terminal”——》“Shell path”,点击右边的文件夹,换成自己安装Git目录下边的“bash.exe” 文件,该文件在“bin”目录中。
2.在Git安装目录下,找到“etc”文件夹,里边有个名为“bash.bashrc” 的文件,用文本编辑器打开,在末尾添加下面的代码:export LANG="zh_CN.UTF-8" export LC_ALL="zh_CN.UTF-8
3.重启IDEA,就不会看到乱码了。
二、本地已删除分支找回
-
git reflog show --date=iso
注意:git reflog用来记录你的每一次命令,–date=iso 表示以标准时间显示,这里要注意的是不能用git log,git log 命令显示从最近到最远的提交日志,当分支被删掉就找不到记录了。
-
git show commitId
,查看此次commit的代码变更
·注意:commitId为上图中的黄色第一列。例如:git show 22be89a
-
git checkout -b 要恢复的分支名 commitId
,即可恢复 -
(选做)如果执行3后报错:
error: The following untracked working tree files would be overwritten by checkout: xxxx/A.java Please move or remove them before you switch branches.
可执行
git clean -d -fx "xxxx/A.java"
解决- x :表示删除忽略文件已经对git来说不识别的文件
- d: 删除未被添加到git的路径中的文件
- f: 强制执行
三、同时打开多个分支
场景:在跟前端联调feat/knowledge-manage,需要随时改此分支的bug;与此同时,我需要开发feat/chatdb分支。
因此,我需要打开一个项目的两个分支
此时,可以在项目目录下使用 git worktree add ../新文件夹名 分支名
例如:git worktree add ../ChatDp-chatdb feat/chatdb
就是相当于把feat/chatdb的代码拉到了…/ChatDp-chatdb下,再用IDEA打开ChatDp-chatdb就可以愉快地在两个项目之间切换开发啦~
开发完后,使用
git worktree list # 查看当前worktree
git worktree remove -f ../文件夹名 # 删除worktree
四、cherry-pick
1. 先拉需要cherry-pick的远端分支
git branch -r # 查看远程分支
git checkout -b 本地分支名 origin/远程分支名
如果显示无此分支的话记得git fetch一下
2. cherry-pick单条记录
git cherry-pick commitId
p.s.不能cherry pick merge那条commit
3. cherry-pick多条记录
# 左开右闭
git cherry-pick <start-commit-id>..<end-commit-id>
# 左闭右闭
git cherry-pick <start-commit-id>^..<end-commit-id>