直接从本地Linux Git远程更改Github存储库中的目录名称吗?


10

这是我的Git存储库:

https://github.com/benqzq/ulcwe

它具有一个名为dir的目录local,我想将其名称更改为另一个名称(例如,从localxyz)。

通过GitHub GUI手动更改它是一个噩梦,因为我必须分别更改每个文件的目录名称(不管,信不信由你,GitHub尚未包括“目录重命名”功能)。

安装Git之后,我尝试了以下命令:

git remote https://github.com/benqzq/ulcwe && git mv local xyz && exit

虽然没有提示输入GitHub密码,但确实收到此错误:

fatal: Not a git repository (or any parent up to mount point /mnt/c)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).

我知道Git的全部目的是下载一个项目,进行更改,测试,然后推送到托管提供程序(在本例中为GitHub),但是仅更改目录,我希望直接进行操作。Git甚至可能吗?

我应该使用其他程序吗?


2
不,在Git中不能直接进行远程操作。您必须克隆(下载)该项目,对其进行更改,然后将其推送回托管提供者。但是,即使在计算机上没有项目的情况下,如何使用Github?您是否要通过Github Web UI进行所有更改-听起来并不方便或高效。
user253751 '18

在这种情况下,使用UI通常对我来说非常方便且高效,我最想念的是直接更改目录名称...
user9303970

Answers:


28

致命错误消息表明您正在从不是git存储库克隆的地方进行工作。因此,让我们从克隆git存储库开始:

git clone https://github.com/benqzq/ulcwe.git

然后输入:

cd ulcwe

并重命名目录:

git mv local xyz

为了使更改可共享,您需要提交更改:

git commit -m "Rename local to xyz"

现在,您可以将其推送到远程git存储库:

git push

并且您会在GitHub界面中看到更改。


14
换句话说,这就像对Git存储库中文件的任何其他操作一样。
Lightness Races in Orbit

2
@LightnessRacesinOrbit到目前为止,提问者似乎一直在使用Web UI进行所有更改。
user253751 '18

5

不,由于git的结构方式,因此无法直接执行此操作。

git的工作方式是将整个存储库的副本(包括所有历史记录)存储到每个位置。

Github或Bitbucket或任何其他托管服务提供商本质上只是git存储库的另一个副本,顶部有漂亮的Web界面,在大多数工作流程中它被视为真相的主要来源,但是git实用工具并不知道这一点。

更改作为提交进行跟踪。我猜是通过direct operation,您的意思是无需创建提交即可更改文件夹名称的方法。尽管可以通过重写历史记录来做到这一点,但我不建议您这样做,尤其是当有多人/计算机具有git repo副本时,因为这可能导致不一致。

在git repo中重命名文件夹的最简单方法是在本地克隆它

git clone [url]
cd [git-folder]

如果您已经有该存储库的本地副本,请将其拉​​出以确保您是最新的远程存储库

git pull

进行本地所需的更改

git mv local xyz

应该由github自动将其添加到暂存区域。然后,您应该提交并推动这些更改。

git commit -m 'Renamed local to xyz'
git push

这会将更改提交到本地存储库,然后将这些更改推送到存储库的远程副本(在本例中为Github)。


8
不,历史记录不作为提交之间的更改存储,每个提交都是自立的。每次需要时,都会根据请求重新计算提交之间的更改。
斯蒂芬·基特

3
“所有历史记录都下载到每个位置” -不使用git clone --depth
user11153

2
不需要历史记录重写-GitHub可以生成一个提交。(就像直接在网站上编辑文件时一样。)
user1686

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.