如何从服务器重新同步到主git仓库?

时间:2016-12-01 01:53:05

标签: git bitbucket

首先,我必须提一下......我是Git的全新手,以及如何使用它。因为我在这里缺乏理解,所以很容易。

所以,最近我们有一个第三方开发人员在我们即将上线的网站上进行了大量的自定义,基本上从我们这里消失了。他们一直在使用Git。然而,就在他们下线之前,他们将Git Repo转移给了我。直到那个时候,我从未使用过Git。由于时间限制,我自己完成了我们网站上所需的大部分最终更改,直接在服务器上进行实际备份。有一次,我试图将服务器同步回主服务器,但我被拒绝了,因为我可能会过度纠正某些文件。我试着阅读一些帖子,遗憾的是,我最终在我的Git上运行了硬重置。我试过恢复,但这似乎没有重置我的git情况。

现在,我想在SERVER上完成所有已完成的更改,并启动一个新的Git master Repo。我没有,擦除以前存在的任何分支,但我不知道如何将服务器链接到新的Git仓库(我刚刚在bitbucket中创建),并将所有必需的内容推送到新的仓库。我害怕让这些序列错误,因为我不想重新开始#34; (虽然,我有一个完整的magento 2备份我的服务器,大约需要一个小时前。)

如果存在任何差异,那么回购活动将在Bitbucket上托管。

我确实有本地安装的Sourcetree,但我不知道如何正确使用它。

至于旧的回购,我不会删除它,并且我在SourceTree中有一份主/原始仓库的副本(我可能会拉链,然后一旦完成就完全删除)

有一次,我更新了主服务器,我想将其部署到另一个备份/开发服务器,之前再次同步到旧的git。

任何和所有帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

这是我能想到的唯一一次使用" git reset --soft"有道理!

在服务器上我会做什么。这里有许多假设:

  1. 您最好使用" cd / path / to / repo将承包商的回购推送到bitbucket; git push --mirror [bitbucket-url],并将其余部分基于此。
  2. 假设您拥有所有内容的备份。
  3. 这些步骤还假设生产服务器上的目录布局与repo中的布局相同,除了您必须移动或添加或重命名的任何目录。
  4. 最后,这些假设是' master'是要同步回来的bitbucket分支的名称。
  5. (哦,选择你喜欢的任何纯文本编辑器"编辑.gitignore"步骤。)

    如果假设成立,这里是我用来将生产服务器同步回主分支的命令序列:

    cd /path/to/code/on/server
    touch .gitignore
    edit .gitignore         # set dir and file patterns you want to omit
    git init                # init is safe even if git repo already present
    git remote add origin [bitbucket-url]
    git fetch
    
    # The "soft" reset!  Makes git think your work on the server
    # directly followed from latest commit on 'master':
    git reset --soft origin/master
    
    git add .               # adds all files from all sub-directories
    git status              # do things look reasonable?
    git diff origin/master  # should see all of your work in "patch" format
    
    # If everything looks good, do the commit!
    git commit -m 'sync prod back to bitbucket'
    
    # And send your commit to bitbucket!
    git push origin HEAD:refs/heads/master
    

    一次警告:请注意添加到.gitignore文件的内容。任何与该文件中的模式匹配的文件或目录都将被git完全忽略,并且不会同步回你的bitbucket repo。