如何将现有的git代码库合并到一个空的代码库中并保留历史记录?

7

我有一个名为“system”的项目,已经设置为仓库,并涉及IT技术。我一直在该项目(system.git)中进行拉取和推送。

现在我想将其发布到像GitHub这样的网站上。最好的方法是什么,可以将我的当前项目推送到新的GitHub项目中,而不会丢失历史记录?

谢谢!

3个回答

11

在Github上创建仓库。

然后将远程地址设置为该项目。

git remote add origin [git hub url]

然后执行:

git push origin [branch name]

你需要把本地仓库推送到Github(包括所有历史记录等)


1
感谢ghills的帮助。我首先需要执行“git remote rm origin”命令,然后才能进行更改。接着,我需要执行“git pull origin master”命令来合并主分支。最后,我才能执行“git push origin master”命令。太棒了!再次感谢! - Dooltaz
1
你其实可以通过 git push [git hub url] +refs/heads/*:refs/heads/* 强制推送它。 - Michael Krelin - hacker
或者使用 "git push origin --all --tags" 命令来推送所有分支和标签。 - Jakub Narębski

2
这实际上是对 ghills 回答中 hacker 评论的回复,但是我的回复有点长,而 SO 不希望我在评论中放置大量代码。

...或者您可以使用除 "origin" 之外的名称。例如,我有一个存储库,其中我的 "master" 分支推送到一个 Github 存储库,而 "hacking" 分支则推送到另一个存储库。

在 .git/config 文件中,我有这个配置:
[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = git@github.com:xiongchiamiov/fourU.git
[branch "hacking"]
    remote = origin
    merge = refs/heads/hacking
[remote "main"]
    url = git@github.com:xyztextbooks/fourU.git
    fetch = +refs/heads/*:refs/remotes/main/*
[branch "master"]
    remote = main
    merge = refs/heads/master

0

对于管理远程分支的跟踪也非常有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接