我使用git来管理我的工作站的dotfiles,使用描述here的设置来存储存储库本身。它基本上通过将存储库文件夹本身放入一个侧面文件夹(我使用~/.dot
)并创建一个专门指向repo和工作树的git的别名来解决homedir版本控制的问题。我的别名是alias dot="/usr/bin/git --git-dir=$HOME/.dot --work-tree=$HOME"
。我可以成功控制整个homedir版本(我有config status.showUntrackedFiles no
用于理智)并使用dot status
,dot add ...
和dot commit ...
等命令来管理我不断变化的配置。 / p>
我遇到的问题是我希望能够编写一个脚本(强制)从我的远程存储库更新我的本地配置。我看过很多地方建议使用git reset,方式如下:
dot fetch origin
dot reset --hard origin/master
这种方法很有意义,事实上我已经看到第一手有人在他们的脚本中使用这种方法,但是当我使用它时,我得到以下错误:
fatal: ambiguous argument 'origin/master': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
有人能说明发生了什么吗?似乎任何时候我需要使用remote/branch
引用语法,它会搞得一团糟。我怀疑这是因为我使用--git-dir和--work-tree而引起的问题,但每当我搜索解决方案时,很少有人会遇到相同的条件。
非常感谢任何帮助!
答案 0 :(得分:0)
我解决了这个问题,它与--git-dir或--work-tree选项无关。
我检查了我的来源,并使用https://github.com/ ...地址进行了设置,因此我将其替换为git remote remove origin
,git remote add origin git@github.com:...
表单指向同一个回购。之后,当我运行git fetch
时,有一个不同的提示,很明显它实际上取了master,然后原点/主引用工作。