Git
Git worktree
Git worktree 语法速览
简单粗暴的写法
git worktree add <新路径>
基于当前分支,新建一个 worktree目录,新的分支名称就是新建目录的名称。
新建一个指定的分支
git worktree add <新路径> -b <新分支名>
基于当前分支,新建一个worktree目录,新的分支名称是指定的名称。
基于指定的分支新建一个指定的分支
git worktree add <新路径> -b <新分支名> <指定分支名>
将基于指定分支,新建一个 worktree 目录,新的分支名是指定的名称。
git worktree remove <path>
Git worktree 注意事项
<新路径>
新路径一般是类似 ../myproject-bugfix 这样的命名,是相对路径,注意,这里一定是两个点:
../myproject-bugfix
表示在当前目录的父目录新建,这样才是与原工程目录平级。(当前,你当前得在原工程的跟目录中。)
总之,注意相对路径。使用 git reset –hard 重置新的 worktree
如果使用了 git worktree add <新路径> 最简单的方法新建,通常分支需要重新命名,基于的分支也要改。
可使用 git reset –hard <要基于的分支名> 重置到想要的分支,使用 git branch -D <想要删除的分支名> 删除自动创建的与目录名相同的分支。
Git worktree 结语
相比复制多个仓库,肯定是 worktree 的方式更高效。
当然,worktree 不允许两个 worktree 使用同一个分支。如果有这个需要怎么办?新建一个分支,reset 到目标分支,再基于这个新分支工作,效果一样。
但如果你经常需要在两个目录中使用同一个分支,那么可能是分支管理或工作方式需要改进。
另外,不使用的 worktree 尽早删除, git worktree remove <path>
并运行 git worktree prune
清理。
原文:
Git中文乱码
- git log
- git status
Git中文乱码之 git log
…
Git中文乱码之 git status
在Git默认的配置下,中文文件名不能正确在终端显示出来,会被显示为八进制的字符编码。
通过将git 变量 core.quotepath
设为 false
,这样就可以解决中文文件名称显示乱码的问题。
git config --global core.quotepath false
Git中文乱码总结
git config --global core.quotepath false
Git回滚至上一个版本
git reset HEAD^
Git log
git log -3
查看最近的3次commit
远程仓库强制覆盖本地仓库
git fetch --all
git reset --hard origin/master
git pull origin master
git fetch --all && git reset --hard origin/master && git pull origin master
其他问题
git remote prune origin
.gitignore文件不生效
.gitignore中已经标明忽略的文件目录下的文件,git push的时候还会出现在push的目录中,或者用git status查看状态,想要忽略的文件还是显示被追踪状态。
原因是因为在git忽略目录中,新建的文件在git中会有缓存,如果某些文件已经被纳入了版本管理中,就算是在.gitignore中已经声明了忽略路径也是不起作用的,
这时候我们就应该先把本地缓存删除,然后再进行git的push,这样就不会出现忽略的文件了。
把某些目录或文件加入忽略规则,按照上述方法定义后发现并未生效,原因是.gitignore只能忽略那些原来没有被追踪的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。那么解决方法就是先把本地缓存删除(改变成未被追踪状态),然后再提交:
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
git push -u origin master
.gitignore
只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore
是无效的。想要
.gitignore
起作用,必须要在这些文件不在暂存区中才可以,.gitignore
文件只是忽略没有被staged(cached)文件, 对于已经被staged文件,加入ignore文件时一定要先从staged移除,才可以忽略。
warning: LF will be replaced by CRLF in
Vscode git Log 中文乱码
{
"terminal.integrated.detectLocale": "off"
}