当前位置: 首页 > 面试题库 >

如何将提交从一个Git存储库复制到另一个?

季嘉良
2023-03-14
问题内容

上周,我创建了一个Github存储库,却忘记选择该存储库的许可证。现在已经有3个大型提交。

我问了3个贡献者是否还可以,是否删除了回购文件,然后使用相同的名称再次创建它,这一次在创建回购文件时选择了许可证,他们对此有何看法。

有没有一种方法可以将提交提交到新的存储库中(这次第一次提交是LICENSE文件),并且仍然保留提交元信息?


问题答案:

有没有一种方法可以将提交提交到新的存储库中(这次第一次提交是LICENSE文件),并且仍然保留提交元信息?

是的,通过在第一次提交的基础上添加一个远程并精心挑选的提交。

# add the old repo as a remote repository 
git remote add oldrepo https://github.com/path/to/oldrepo

# get the old repo commits
git remote update

# examine the whole tree
git log --all --oneline --graph --decorate

# copy (cherry-pick) the commits from the old repo into your new local one
git cherry-pick sha-of-commit-one
git cherry-pick sha-of-commit-two
git cherry-pick sha-of-commit-three

# check your local repo is correct
git log

# send your new tree (repo state) to github
git push origin master

# remove the now-unneeded reference to oldrepo
git remote remove oldrepo

该答案的其余部分是,如果您仍想将LICENSE添加到以前的仓库中。

是。您可以通过重新定级将LICENSE提交作为第一个提交。

变基是重新排列提交顺序,同时保持所有提交作者和提交日期不变的gits方法。

在共享仓库上工作时,除非您的整个团队精通流水,否则通常不建议这样做。对于那些不是的人,他们可以克隆存储库的新副本。

这是您第一次获得LICENSE提交的方式。

签出您的项目,并将LICENSE文件放入当前3个提交堆栈的ON TOP提交中。

#create LICENSE file, edit, add content, save
git add LICENSE
git commit -m 'Initial commit'

然后在master分支上进行交互式变基,以 重新 确定提交。

git rebase -i --root

它将打开一个编辑器。将底行(您的“初始提交”提交,最近的提交)移动到文件的顶部。然后保存并退出编辑器。

退出编辑器后,git将按照您刚才指定的顺序写入提交。

现在,您已更新了存储库的本地副本。做:

git log

核实。

2.强制将新的回购状态推送到github

现在,您的副本已更新,您必须强制将其推送到github。

git push -f origin master

这将告诉github将master分支移动到新位置。您仅应在这种罕见的情况下强制推送,每个人都在与它一起工作时意识到即将发生的更改,否则它将使您的协作者感到困惑。

3.将协作者同步到github

最后,所有协作者都必须同步到该存储库。

首先, 它们必须具有干净的存储库, 因为如果有未保存的更改,则以下命令可能具有破坏性。

# make sure there are no unsaved changes
git status

# pull the latest version from github
git fetch

# move their master branch pointer to the one you published to github.
git reset --hard origin/master

而已。现在每个人都应该保持同步。



 类似资料:
  • 我有一个名为的表和另一个的表。是表的副本。 现在,表可以随时删除并重新创建,添加新列并将旧列重命名为不同的列。我编写了一个存储过程,它将数据从表复制到表,这取决于是否需要插入或更新 现在我有点迷路了:如何解决这个问题,即一旦删除并重新创建了sales表,如何修改对saleshistory表的更改? 任何想法或相同的代码,如果需要,我可以在存储过程中共享我的代码,但这很简单 这是代码

  • 我正试图将证书从一个密钥存储库复制到另一个密钥存储库中,而不在本地计算机上保存它。看起来Azure KeyVault CLI只支持基于文件的证书导入,如下所示: 有什么方法可以代替传递对象或字符串吗?在Azure Powershell模块中,这是可能的:

  • 问题:我想从谷歌云存储桶中的文件夹(例如桶1中的文件夹1)复制文件到另一个桶(例如桶2)。我找不到任何谷歌云存储的气流操作员来复制文件。

  • 我使用以下代码将文件从一个桶复制到另一个桶 但是我总是得到“com . Amazon AWS . services . S3 . model . Amazon S3 exception:Access Denied(服务:亚马逊S3;状态代码:403;错误代码:拒绝访问;请求ID: B6466D562B6988E2)“`作为回应,原因可能是什么

  • 问题内容: 这个问题已经被问了很多遍了,而且似乎对其他人也有用,但是,当我从不同的DataFrame复制列(并且长度相同)时,我得到了值。 我需要这样 我尝试了以下方法 我得到以下内容 问题答案: 您的DataFrames的索引是不同的 (相应地,每列 的索引也不同 ),因此,当尝试将一个DataFrame的列分配给另一列时, pandas会尝试对齐索引,但这样做会失败,请插入NaN。 考虑以下示

  • 问题内容: 我需要将表从一个数据库复制到另一个数据库。这将是一个cronjob。哪一种是最好的方法?PHP脚本或Shell脚本。PHP的问题是,两个数据库都有不同的用户名和密码,所以我不能这样做。 我应该只连接第一个DB以获得所有记录,然后使用WHILE循环将所有记录插入新数据库,还是有更好的方法? 我更喜欢用shell脚本代替PHP脚本来执行此操作。 谢谢 问题答案: 我把它丢了。比任何基于PH