如何在本地计算机上安装一个工作目录并将chanegs分别推送到两个不同的遥控器?
我在服务器dev
和main
上设置了两个git存储库。每当我在计算机上进行更改时,我都希望将更改推送到dev
或main
。
仅供参考,我使用git来部署我的代码。 (我按照this指令进行了设置。)我有一个网站,我想先将更改推送到dev
我的客户可以查看。如果更改看起来没问题,那么我想将更改推送到将部署更改的main
。
这是我到目前为止所做的。
git init
git remote add dev me@myserver.com:/var/git/dev.git
git remote add main me@myserver.com:/var/git/main.git
然而,当我进行更改并尝试推送到任一仓库(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的基础知识。有人能帮助我吗?
答案 0 :(得分:1)
pull
是fetch
,然后是合并。
当您执行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
这将fetch
和merge
来自dev
的最新更改。一旦解决了任何合并冲突,您就可以push
干净利落地完成:
git push dev master