git commit отменяет новые удаленные изменения с помощью исходного кода (отсоединенный HEAD?) - PullRequest
0 голосов
/ 20 октября 2010

У меня возникли проблемы с настройкой git, которую я хотел использовать в нашей компании.

Я установил git "сервер" с основным хранилищем кода на выносливой машине с Ubuntu с помощью git 1.5.4.3. Я новичок в git и настраиваю этот репозиторий шаг за шагом с помощью учебника.

git init
git add .
git commit -m "initial commit"

Затем я установил клиентскую (Win XP) git install с версией 1.7.3.1.msysgit.0 (официальный git для windows) и клонировал этот репозиторий через 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 я перехожу к главному репо и проверяю, что произошло:

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 --hard с идентификатором удаленной фиксации. Но таким образом я должен применить все изменения к коду вручную.

Я не использую другие ветки, только "master" и не использую git commit с какими-либо другими параметрами, кроме "-a", поэтому у меня нет никакой подсказки, где источник этой ошибки.

Из того, что я читал до сих пор, это может быть отсоединенной проблемой HEAD, но я не знаю, почему отсоединена голова. Если я сделал локальные изменения на машине с Ubuntu, все идет хорошо. Я могу зафиксировать и увидеть изменения на моей удаленной машине после выборки или извлечения. Но я не могу применить удаленные изменения, кроме как с помощью reset --hard.

Надеюсь, что кто-то может помочь мне с этим.

С наилучшими пожеланиями, Себастьян

1 Ответ

1 голос
/ 20 октября 2010

Не выдвигайте в не голое хранилище.Это обновит голову, но не рабочее дерево, что приведет к странному поведению, когда вы посмотрите на него позже.Это можно исправить, выполнив git reset --hard, чтобы обновить рабочее дерево на сервере до текущего заголовка.

Существует два способа исправить это:

  1. Инициализировать новый репозиторийна сервере с git init --bare
  2. Очистите рабочее дерево на сервере и переместите все содержимое подкаталога .git на верхний уровень.Вероятно, вам следует переименовать репозиторий, чтобы он заканчивался на .git, как это обычно для обычных репозиториев.
...