git commit使用原始代码覆盖新的远程推送更改(分离头?)

git commit使用原始代码覆盖新的远程推送更改(分离头?),git,commit,Git,Commit,我想在我们公司使用的git设置遇到了一些问题 我在一台使用git 1.5.4.3的ubuntu hardy机器上设置了一个带有主代码库的git“服务器”。 我是git新手,通过教程一步一步地设置这个存储库 git init git add . git commit -m "initial commit" 然后,我安装了一个客户端(WinXP)git,版本为1.7.3.1.msysgit.0(windows的官方git),并通过ssh克隆了该存储库 git clone <IP>:/v

我想在我们公司使用的git设置遇到了一些问题

我在一台使用git 1.5.4.3的ubuntu hardy机器上设置了一个带有主代码库的git“服务器”。 我是git新手,通过教程一步一步地设置这个存储库

git init
git add .
git commit -m "initial commit"
然后,我安装了一个客户端(WinXP)git,版本为1.7.3.1.msysgit.0(windows的官方git),并通过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")
然后我推送到服务器上的存储库:

$ 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
如果我执行gitcommit,他会向我请求消息commits,但不会应用对新推送代码的更改

我发现应用新更改的唯一机会是git重置——远程提交ID很难实现。但这样我必须手动将所有更改应用到代码中

我不使用其他分支,只使用“master”,也不使用git commit和“-a”以外的任何其他参数,因此我不知道错误的来源

从目前为止我所读到的,这可能是一个头部分离的问题,但我不知道为什么头部分离。 如果我在ubuntu机器上做了本地更改,一切都会很顺利。在获取或拉取之后,我可以提交并查看远程计算机上的更改。但我无法应用远程更改,除了重置-硬

希望有人能帮我


最好的问候,塞巴斯蒂安不要推到非裸存储库。它会更新头部,但不会更新工作树,当您稍后查看它时,会导致奇怪的行为。您可以通过执行
git reset--hard
将服务器上的工作树更新为当前头来修复它

有两种方法可以解决此问题:

  • 使用
    git init--bare初始化服务器上的新存储库
  • 清除服务器上的工作树,并将
    .git
    子目录的全部内容移动到顶层。您可能应该重命名存储库,使其以
    .git
    结尾,这是裸存储库的惯常做法

  • 看起来您正在推送到一个非裸存储库,它肯定会产生警告,并且根据git的版本,会出现致命错误。我误解了吗?(当推送至非裸回购时,提交会被推送,但工作树不会被触动。如果要使其更新,必须执行
    重设--hard
    。理想情况下,您只能推送至裸回购。)
    $ 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
    
    git status
    # On branch master
    # Changes to be committed:
    #   (use "git reset HEAD <file>..." to unstage)
    #
    #       modified:   searchfunc_admin.php
    #
    
    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);
            }
     }