Git

Git worktree

Git worktree 语法速览

基于当前分支,新建一个worktree目录,新的分支名称是指定的名称。

Git worktree 注意事项

Git worktree 结语

相比复制多个仓库,肯定是 worktree 的方式更高效。
当然,worktree 不允许两个 worktree 使用同一个分支。如果有这个需要怎么办?新建一个分支,reset 到目标分支,再基于这个新分支工作,效果一样。
但如果你经常需要在两个目录中使用同一个分支,那么可能是分支管理或工作方式需要改进。

另外,不使用的 worktree 尽早删除, git worktree remove <path> 并运行 git worktree prune 清理。

原文:

Git中文乱码

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 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
  1. .gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。

  2. 想要.gitignore起作用,必须要在这些文件不在暂存区中才可以,.gitignore文件只是忽略没有被staged(cached)文件, 对于已经被staged文件,加入ignore文件时一定要先从staged移除,才可以忽略。

warning: LF will be replaced by CRLF in