Git 有自己的命令版本,例如mv
和rm
我们在存储库中执行这些操作时确实应该使用它们。
然而,我确信我不是唯一一个经常忘记这样做的人。
在 git 存储库中操作时有什么方法可以自动使用这些工具吗?
bash
我对、zsh
或中的任何一个的答案感兴趣fish
。
答案1
git mv
做了与平常不同的事情mv
,并且非常不是直接替代品。
例如,它不会作用于未跟踪的文件:
touch foo
git mv foo bar
印刷
致命:不受版本控制,源=foo,目的地=bar
并拒绝移动文件。类似的情况也适用于其他命令。它们是工作的工具用git,因此使用这些命令而不是正常的操作系统版本是不是一个好主意。
Git 有自己的命令版本,例如 mv 和 rm,我们在存储库中执行这些操作时确实应该使用它们
你不应该。
答案2
我建议您使用一些 git rev-parse 的 myrm / mymv 脚本,以便检测您是否在存储库内并采取相应的行动。就像是 :
ingitr="$(git rev-parse --is-inside-work-tree 2>/dev/null)"
if [ "$ingitr" ]
then
git rm $1 ( git mv $1 $2 )
else
rm $1 ( mv $1 $2 )
fi
当然,这是一个起点。为了照顾各种选择,它当然应该得到增强。
然而我从评论中读到……你不应该想要这样。 (我会在压力下删除这个答案......;-)