Git使用备忘

本文介绍了在IntelliJIDEA中处理gitlog中文乱码的方法,如何找回本地和远程删除的分支,以及如何同时管理多个分支和进行cherry-pick操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、IDEA中git log中文乱码

  1. 在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,就不会看到乱码了。

二、本地已删除分支找回

  1. git reflog show --date=iso
    注意:git reflog用来记录你的每一次命令,–date=iso 表示以标准时间显示,这里要注意的是不能用git log,git log 命令显示从最近到最远的提交日志,当分支被删掉就找不到记录了。
    在这里插入图片描述

  2. git show commitId,查看此次commit的代码变更
    ·注意:commitId为上图中的黄色第一列。例如:git show 22be89a

  3. git checkout -b 要恢复的分支名 commitId,即可恢复

  4. (选做)如果执行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>

参考博客

  1. IDEA terminal GIT log 中文乱码
  2. 【git】误删除了本地和远程开发分支,怎么找回,怎么恢复远程分支和本地分支?
  3. git报错:Please move or remove them before you can switch branches.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值