git push保留历史和分支

时间:2018-04-03 02:16:02

标签: git repository push

我有一个本地存储库,我用'git init'创建并开始提交。 为我在某个服务器上的工作创建了一个“远程”存储库,现在我需要用我的整个工作“更新”它(保留历史和分支)。

我假设我需要首先将'remote'克隆到我的机器中,然后以某种方式'更新'以保存整个历史内容然后推送,但是: 1. - 我该怎么做? 2. - 是否有一种简单的方法可以做到这一点(意思是'自动' - 以便git为我做这一切)?

干杯

2 个答案:

答案 0 :(得分:0)

  

现在我意识到已经有了#34;"在那'遥控'存储库,意味着本地存储库应该被推送。作为' remote'的一个分支,以便我的主人'分支成为一个名字'再次分支' remote'再保留所有历史记录。

这就是问题:你不能只是推,特别是如果主分支已经有了一些历史。

如果您的提交添加到现有内容中,您要做的就是在现有远程历史记录之上重播它们:

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将推送所有(所有分支)

答案 1 :(得分:0)

  

“远程”存储库中已经存在“某些东西”,这意味着   本地存储库应该被“推”为“远程”的一个分支,以便我的   'master'分支再次成为'remote'上的'someName'分支 -   保留所有历史。

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

最简单的实现方式如下:

使用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