代码之家  ›  专栏  ›  技术社区  ›  Dagg Nabbit

git新手-如何将克隆回购更改为原始回购?

  •  1
  • Dagg Nabbit  · 技术社区  · 14 年前

    在服务器上(通过ssh):

    • 在专用服务器上创建站点
    • 在那里创建了一个git回购( git init

    在我的办公室:

    • 在我的开发机器上克隆了repo
    • 对本地文件做了一些更改
    • 做了一个承诺
    • 推了一下

    git show ,它显示了一个差异,在这个差异中,服务器的最后一份内容被删除,而我从办公室推送的内容被添加。这就是我想要的。我搞不懂的是: 我需要在服务器上做什么才能使我从办公室推送的更改变为“实时”更改

    过去我用svn部署网站非常成功,我想我也可以用git解决这个问题。。。但很明显我错过了一个难题。谢谢你的帮助。


    编辑 Git - pulling changes from clone back onto the master


    重新表述问题

    . git是否有一种内置的方法来实现这一点?


    回答

    看起来像 git checkout -f 在服务器上做了我想做的事情,但是创建一个--bare repo会是一个更好的方法(我现在已经改变了这个设置)。

    2 回复  |  直到 8 年前
        1
  •  4
  •   dgnorton    14 年前

    通常在服务器上 git init --bare 它创建了一个没有工作目录的repo。如果这是您选择的路线,那么您必须将更改从那里拉到web目录,作为“部署”步骤。所以你的工作流程看起来像。。。

    On dev PC:
    
    1. git clone <path to server repo>
    
    *make code changes*
    
    2. git commit -am "fixed a bug"
    
    *add some new feature*
    
    3. git commit -am "added cool new feature"
    
    4. git push origin master
    
    
    On the server:
    
    *cd to www folder*
    
    5. git pull
    
    1. 将服务器repo克隆到您的开发人员机器上,您已经完成了
    2. 将错误修复提交到 回购…不是服务器的回购
    3. 地方的 回购…再说一遍,不是服务器的
    4. 将所有更改从主分支推送到服务器的主分支

    此时,在您的网站上看不到任何更改。你需要“部署”它们。

    在那里 git tutorials “一切都很好” Pro Git

        2
  •  1
  •   Community CDub    8 年前

    如果您推送到的服务器上的git repo是用于实时系统的,那么您可能需要执行以下操作:[ ] git reset [--hard|...] HEAD 在服务器上,我猜是一次推送之后(请参阅 git-reset man page --hard 或者别的什么; 全部重置

    如果实时系统在服务器上的其他地方,请执行以下操作 git pull 从你的回购推到(在目录与你的实时系统)。

    取来 是互补的,也就是说,从A推到B就像从B取A一样。
    取来 接着是一个 .

    编辑:
    jmohr 论二者的细微差别 取来 : git push not send changes to remote git repository