设置新的远程存储库后,如何提交现有更改?

时间:2019-10-13 04:13:19

标签: git github

我是git新手,最近继承了一个非功能性项目,可以访问该代码的本地生产版本。我对本地已签出的分支进行了更改,以使其再次运行。我无法提交这些更改,因为远程GitHub存储库是私有的,因此我创建了一个新存储库并尝试将代码检入到新存储库中,以希望维护项目的历史记录。这是我尝试过的内容:

git remote set-url origin https://github.com/newrepo.git
git commit -m "initial commit to new github repo"
git push -u origin --all
git push --prune https://github.com/newrepo.git +refs/remotes/origin/*:refs/heads/* +refs/tags/*:refs/tags/*
git push --mirror https://github.com/newrepo.git

这些都不起作用-我只能在新存储库中使用自述文件,也许是因为我没有对原始文件的读取权限?我不确定。

此后,我已经可以访问原始的私有存储库,并将其克隆到一个新的干净的存储库中,以便我可以维护项目的历史记录。我想检查一下代码的本地副本(包含更改),以获取所有信息。最好的方法是什么?

当我执行git status时,它不再显示以前的已更改文件列表(由于我认为是提交)。我应该先做git commit -a然后推送吗?我只是不确定。

2 个答案:

答案 0 :(得分:2)

  

在新存储库中,我只剩下自述文件

在创建新存储库时,请确保将其创建为

但是在您的情况下,由于它是一次提交创建的,因此请强制执行。

git push --force -u origin master
git push --all

  

我想检查代码的本地副本(进行更改),以使一切都变得正常

您可以使用--work-tree option将工作树文件夹设置为仅用于导入更改的旧克隆文件夹:

cd /path/to/local/clone
git --work-tree=/path/to/local/copy/with/changes add .
git commit -m "Integrate changes"

答案 1 :(得分:1)

我的理解:

  • 您在计算机上拥有原始回购副本的工作版本,但是文件夹的远程回购不是很好(我们将其称为RepoB)
  • 您现在具有对原始存储库(RepoA)的写权限

我建议3个考虑选项(包括许多其他选项):

  • 选项B。修复RepoB并创建对RepoA的拉取请求
  • 选项C。忘记RepoB,从本地更改中创建RepoC,推送更改并创建从RepoC到RepoA的拉取请求
  • 选项A。忘记RepoB,将本地更改迁移到RepoA。

对于您的情况,我建议使用C,因为它应该非常简单,并且发生的事情与RepoB无关。

选项C

  1. cd path/to/repoA
  2. git checkout -b theBestBranchNameEver-在 RepoA 中创建一个新分支。
  3. 不带文件夹的情况下将RepoB复制到RepoA上。
  4. 现在repoA包含您在本地进行的更改。您可以按照通常的git flow来提交和推送更改。
  5. git add --all
  6. git commit -am "Commit message here"
  7. git push

现在,RepoA包含一个分支,该分支将您的本地更改作为一次提交。现在,您可以将更改合并到一个公共分支中(例如developmaster)。

您根本不需要任何强制或高级git命令。