git分别将更改推送到两个遥控器

时间:2013-09-04 12:22:20

标签: git

如何在本地计算机上安装一个工作目录并将chanegs分别推送到两个不同的遥控器?

我在服务器devmain上设置了两个git存储库。每当我在计算机上进行更改时,我都希望将更改推送到devmain

仅供参考,我使用git来部署我的代码。 (我按照this指令进行了设置。)我有一个网站,我想先将更改推送到dev我的客户可以查看。如果更改看起来没问题,那么我想将更改推送到将部署更改的main

这是我到目前为止所做的。

  1. cd到我本地计算机上的项目目录。
  2. git init
  3. git remote add dev me@myserver.com:/var/git/dev.git
  4. git remote add main me@myserver.com:/var/git/main.git
  5. 然而,当我进行更改并尝试推送到任一仓库(git push dev master)时,我收到以下错误。

    To me@myserver.com:/var/git/dev.git
     ! [rejected]        master -> master (non-fast-forward)
    error: failed to push some refs to 'me@myserver.com:/var/git/dev.git'
    To prevent you from losing history, non-fast-forward updates were rejected
    Merge the remote changes (e.g. 'git pull') before pushing again.  See the
    'Note about fast-forwards' section of 'git push --help' for details.
    

    当我git pull时,我得到了

    fatal: No remote repository specified.  Please, specify either a URL or a
    remote name from which new revisions should be fetched.
    

    我想我不了解一些git的基础知识。有人能帮助我吗?

2 个答案:

答案 0 :(得分:1)

pullfetch,然后是合并。 当您执行fetch时,您需要指定要提取的遥控器,因此请尝试

git pull dev

git pull main

请注意,维持推送到不同的回购非常棘手。更好的方法是为每个设置一个分支(使用默认远程)并在本地处理合并。

git checkout -b main main / master git checkout -b dev dev / master

您的工作周期看起来有点像:

<do some work on master>
git checkout -b dev
git pull
git merge master (Or the specific commits you want).
git push
<get client to approve, assuming he does>
git checkout -b main
git pull
git merge dev
git push
<go back to master>
git checkout -b master

在git手册中查找如何处理合并特定提交的挑选。

答案 1 :(得分:0)

您需要完成错误所说的内容:指定远程存储库

git pull dev

这将fetchmerge来自dev的最新更改。一旦解决了任何合并冲突,您就可以push干净利落地完成:

git push dev master