我想在我们公司使用的git设置有些麻烦。
我在git 1.5.4.3的ubuntu hardy机器上用主代码库建立了一个git“服务器”。 我是git的新手,并使用教程逐步设置此存储库。
git init
git add .
git commit -m "initial commit"
然后我用版本1.7.3.1.msysgit.0(官方git for windows)设置了一个客户端(Win XP)git install,并通过ssh克隆了该存储库。
git clone <IP>:/var/git/<repo> <target>
<made some file changes>
git status ob my client then says:
$ git status
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: searchfunc_admin.php
#
no changes added to commit (use "git add" and/or "git commit -a")
然后我做了一个提交-a,它给出了:
[master 9404d01] + searchfunc_admin.php DB Verb. Prüfung modifiziert
1 files changed, 3 insertions(+), 3 deletions(-)
然后我推送到服务器上的存储库:
$ git push origin master
<user>@<IP>'s password:
Counting objects: 5, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 385 bytes, done.
Total 3 (delta 2), reused 0 (delta 0)
To 192.168.1.26:/var/git/farocmsafs
5267756..9404d01 master -> master
在ubuntu机器上,我cd到主仓库并检查发生了什么:
git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: searchfunc_admin.php
#
如果我检查DIFF,它会显示更改,但它们会作为旧代码处理,应使用原始代码(这是真正的旧代码)进行更新
git diff HEAD
diff --git a/searchfunc_admin.php b/searchfunc_admin.php
index 4e15696..17ca17a 100755
--- a/searchfunc_admin.php
+++ b/searchfunc_admin.php
@@ -9,11 +9,11 @@ require_once("additional/functions.php");
// INITS
//**********
// Connect to database
-if(!$mylocal || !$myafs)
+if($DB_CONNECTION != TRUE)
{
- if(!sqldb_connect())
+ if(($sql_return = sqldb_connect()) != TRUE)
{
- echo "Cant connect to database";
+ echo "Cant connect to database: ".$sql_return;
die(1);
}
}
如果我执行git commit,他会向我询问消息,提交,但不会应用新推送代码的更改。
我发现我应用新更改的唯一机会是git reset - 使用远程提交ID。但是这样我必须手动对代码应用所有更改。
我不使用其他分支,只使用“master”,并且不使用git commit与“-a”之外的任何其他参数,所以我没有任何线索,该错误的来源是。
从我到目前为止所读到的内容来看,这可能是一个独立的HEAD问题,但我不知道为什么头部是分离的。 如果我在ubuntu机器上进行了本地更改,一切顺利。我可以在提取或拉取后提交并查看远程计算机上的更改。但是我无法通过reset --hard来应用远程更改。
希望有人能帮助我。最诚挚的问候,塞巴斯蒂安
答案 0 :(得分:1)
不要推送到非裸存储库。它将更新头部而不是工作树,当您稍后查看它时会导致奇怪的行为。您可以通过执行git reset --hard
将服务器上的工作树更新为当前头来修复它。
有两种方法可以解决这个问题:
git init --bare
.git
子目录的全部内容移动到顶层。您应该重命名存储库,使其以.git
结束,因为这是裸存储库的惯例。