保留历史记录和分支的Git推送

3
我有一个本地仓库,我使用 'git init' 创建并开始提交。现在,为了我的工作,在某个服务器上创建了一个“远程”仓库,我需要 “更新” 它以包含我所有的工作(保留历史记录和分支)。
我认为我需要先将那个“远程”克隆到我的机器上,然后以某种方式“更新”它以保存整个历史内容,最后推送,但是: 1. - 我该如何做到这一点? 2. - 有没有简单的方法可以做到这一点(也就是“自动”完成,让 Git 为我完成所有操作)?
谢谢!

1
你所要做的就是推送。这将把特定分支放到远程,你可以为每个分支执行此操作(或使用某些标志一次性完成所有操作)。 - jhpratt
我需要先将“remote”引入到我的“local”存储库中,然后再进行“push”操作吗? - taduri
你的远程代码托管在哪里?GitHub、GitLab还是一些自托管(或企业)机器上?请查看基本的git指南,了解如何添加远程仓库并推送代码。 - jhpratt
1
真诚的问题 - 如果这是公司的事情,为什么不问他们呢?无论如何,很多问题都可以通过简单的搜索得到答案。 - jhpratt
  1. "他们"说"自己解决,我们不知道"(他们刚在Bitbucket中创建了远程仓库)。
  2. 搜索了一下,但没有找到非常具体(针对该情况)的答案。
- taduri
显示剩余2条评论
2个回答

1
现在我意识到“远程”存储库中已经有“某些内容”,这意味着本地存储库应该作为“远程”的一个分支进行“推送”,以便我的“主”分支成为“远程”的“某个名称”分支,同时保留所有历史记录。
这就是问题所在:你不能只是简单地进行推送,特别是当主分支已经有一些历史记录时。
如果你的提交添加到了现有内容中,你需要将它们重新应用到现有的远程历史记录之上。
cd /path/to/local/repo
git checkout master
git remote add origin /url/remote/repo
git fetch
git rebase origin/master
git push -u origin master    

如果历史记录与现有内容无关,则更容易在服务器端创建一个空的存储库。
从那里开始,简单的git push --mirror将推送所有内容(所有分支)。

0

该“远程”存储库中已经存在“某些内容”,这意味着本地存储库应作为“远程”的一个分支进行“推送”,以便我的“主”分支成为“远程”上的“某个名称”分支,同时保留所有历史记录。

因此,解决您的问题最简单的方法是在远程存储库中创建一个任意名称的新分支,并将本地工作副本的更改推送到该分支。

实现最简单的方法如下:

使用GitLab/GitHub复制远程存储库的URL,然后在系统中的任何位置创建一个新文件夹,打开gitbash并编写以下命令:

git init

git clone <Paste the url>

您将在您的文件夹中获得主分支中的所有文件。

然后创建一个分支:

git branch <branch_name>

这将在本地创建一个新分支,然后切换到新创建的分支:

git checkout <branch_name>

现在将您想要推送到远程的所有文件粘贴到git文件夹中。

现在我们只需要按照以下方式提交:

git add .

这个命令将把文件添加到暂存区。

git commit -m"Any message"

提交更改。
git push origin <branch_name>

完成!

其中 origin 是远程名称 由于我们没有创建新的远程仓库,而是克隆了现有的远程仓库。因此,默认情况下远程名称将为origin


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