【问题标题】:Surprised by git remote behavior对 git 远程行为感到惊讶
【发布时间】:2014-05-09 02:33:50
【问题描述】:

在 mac OS-X Mavericks 上,尝试对源自已安装卷的存储库进行本地克隆。

我创建原始存储库

pushd /Volumes/somevolume
mkdir testbox
cd testbox
git init

我在其中放入、添加和提交一个文件

cat > test.text
testing git remote
^D
git add -A
git commit -am "initial commit"

我现在将 repo 克隆到我的常规主页

pushd ~/Documents
git clone /Volumes/somevolume/testbox
cd testbox
cat test.text

一切正常。现在我在本地克隆中更改并提交文件

cat >> test.text
a new line
^D
git commit -am "add a new line to test.text"

检查它是否真的改变了

cat test.text
testing git remote
a new line

并将其推送到远程源

git push origin master

编辑:我收到一个我不明白的警告

Counting objects: 5, done.
Writing objects: 100% (3/3), 277 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: warning: updating the current branch
To /Volumes/lockbox/testbox/
   bb6f7d1..5d2f521  master -> master

我现在去检查文件是否被推送

pushd /Volumes/somevolume/testbox
git status

# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   test.text
#

这很奇怪...让我们看看文件是否包含我认为我推送的内容...

cat test.text
testing git remote

我尝试添加和推送的新行不在这里,即使 git 认为文件已被修改?从本地工作目录推送后,为什么我必须在源远程执行任何操作? Github 似乎不是这样工作的。也许变化就在这里

git diff

没有可见的变化。我现在完全糊涂了。

【问题讨论】:

  • 嗯,它让你在没有警告的情况下推动?你用的是什么版本的git?
  • 哦,我收到了警告,但我不明白。我将编辑带有警告的问题。

标签: git


【解决方案1】:

当您push 到非bare 远程存储库时,您的更改会记录到.git 目录中的存储库,但不会应用于已签出版本的存储库(“工作副本”)。这就是为什么通常建议仅将裸存储库用作远程存储库的原因,否则行为可能会令人困惑。

您会注意到,在推送之后,您的原始存储库显示文件 test.txt 已修改:

pushd /Volumes/somevolume/testbox
git status

# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   test.text

这是因为该文件现在与存储库的内容不同。

警告“远程:警告:更新当前分支”警告您正在推送到当前已签出的分支。

有时您可能实际上想要推送到非裸存储库(也许您正在使用 git push 或其他方式部署网站),但您需要设置适当的机制来将更新应用于工作副本(并且您通常需要将工作副本视为只读以避免冲突)。

【讨论】:

  • 如何验证我的内容确实在裸仓库中(我试过了)?由于没有工作目录,我无法直接检查文件。 Atlassian 的 SourceTree 不会打开裸存储库。似乎没有“git ls”。在我走这条路之前,我需要有一种方法来验证裸远程 repo 是否已正确更新。我可以在 Github 上这样做,因为他们(不知何故)让我查看文件。我正在尝试在本地机器上尽可能接近 github 的行为。
  • 您通过在某处检查裸遥控器来验证它是否已正确更新。
  • 知道了。完全明白。感激不尽:)
猜你喜欢
  • 2015-10-30
  • 2016-12-11
  • 2021-08-20
  • 2019-10-05
  • 1970-01-01
  • 1970-01-01
  • 2017-05-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多