如何在 github 上提交更改从本地目录到远程而不需要一步步克隆?

问题描述 投票:0回答:3

我有一个 github 存储库和一个进行了更改的本地目录,其中没有任何 .git 目录。 我想提交我的更改。 我可以克隆 github,然后将文件复制到那里,但这会更改我不想要的文件的修改日期。

我做了什么:

git init
git remote add origin https://...
git fetch origin
git add .
git status - shows all files as new
git diff origin/main - shows the correct changes I want to commit

然后我就这么做了

git commit -m 'My first commit' 

此后我的本地分支成为主分支,状态将不再显示任何内容。

我知道这可能是非常基本的东西,但我找不到任何指导如何做到这一点。

github commit
3个回答
0
投票

将文件复制到那里,但这会更改修改日期

使用pax(1)。类似的东西

$ pax -rw modfied.c working_tree/

将复制文件而不更改元数据。


0
投票

最有可能的是,由于您没有克隆远程存储库,因此您的本地存储库不知道您想要推送到什么。换句话说,你的分支没有目标。您可以像这样设置上游

git branch -u origin main

然后再次尝试 git status/git Push。它现在应该知道要比较什么并推动什么。


0
投票

听起来你有一个非常旧的 Git 副本,因为你的本地默认分支称为

master
,而 GitHub 默认分支以及现代 Git 中的默认分支是
main
。然而,一切并没有失去。只需切换到
main
并合并:

git switch main
git merge master

现在推送到 GitHub:

git push origin main

但这会改变我不想要的文件的修改日期

那么 Git 不是您想要使用的工具,因为:

  • 首先,Git 不尊重原始文件修改日期。它对此不感兴趣。相反,每次您签出一个分支时,工作树中尚未存在的处于相同状态的任何文件都会被重新创建 - 它们的修改日期变为“现在”。因此,如果您关心保留文件的原始修改日期,那么您就错了。

  • 但也许您的意思是您想要保留的是您所做的“更改”的
  • 序列

    。好吧,坚韧的坚果。您在不受 Git 控制的情况下进行了所有这些“更改”,因此 Git 对此不承担任何责任并且对此一无所知。如果事件的顺序对您来说很重要,您可能“应该”做的是首先在本地 Git 存储库的工作树中工作,并在每次编辑后进行添加和提交,以保留历史记录您进行“更改”的顺序。但现在已经太晚了。历史列车已经离开车站。

© www.soinside.com 2019 - 2024. All rights reserved.