Git推送在存储库中不可见

时间:2013-12-18 15:52:39

标签: macos git

在工作中发生了几次大规模失败后,我决定在工作中应该进行某种版本控制。我选了git。

  • 已安装的git
  • 使用管理员帐户创建了一个存储库
    • cd /path/to/hd/
    • cd mkdir test.git
    • cd test.git以确保它不是裸存储库
    • git init
    • touch README.txt创建文本文件
  • 克隆存储库git clone /Volumes/Data/git/test/
  • 创建了一个分支git checkout -b mybranch
  • 对自述文件进行了修改
  • 推送分支git push origin mybranch
  • 转回主人git checkout master
  • 已删除分支git branch -d mybranch

到目前为止,一切似乎都有效。所以我查找服务器上的文件,但它们保持不变。当我使用GitX打开test.git时,提交已存在。有变化。但实际文件没有改变。

我做错了什么?

PS。我遵循了这个指南:http://rogerdudler.github.io/git-guide/

2 个答案:

答案 0 :(得分:1)

您看到的是使用工作副本推送到存储库的结果。当您使用工作副本推送到回购时,有两种可能的结果。

  • 如果当前签出的分支是您尝试更新的分支,则推送将失败。
  • 否则,您推送的分支将会更新,但工作副本不会更改,因为更新了不同的分支。

您现在在服务器上拥有的内容可能是这样的:

A <- master
|
B <- mybranch

在签出master时,由于你没有更改master,当你推送到服务器时没有出错。

因此,当您创建一个将要用作远程的存储库时,您几乎不希望它具有工作副本(即实际签出的文件)。您想要创建一个裸存储库,也可能希望它被共享,如下所示:

 git init --bare --shared=true

shared选项也可以是许多其他设置,有关选项,请参阅git help init

我认为你正在寻找的工作流程是

  • 在服务器上
    • git init --bare --shared=true
  • 在您的机器上
    • git clone /path/to/remote
    • git checkout -t -b mybranch
    • [做工作,承诺mybranch]
    • 要么
    • git checkout master && git merge mybranch && git push origin master在远程
    • 上更新master
    • git push origin mybranch在远程创建分支mybranch而不更新主数据。

答案 1 :(得分:0)

我不确定,但在推送之前可能git commit会有所帮助吗?