Почему git предупреждает меня, что моя ветка отошла от мастера? - PullRequest
1 голос
/ 11 мая 2011

Я помогаю LibreOffice и начал изучать git. Я клонировал репозиторий LibreOffice и получил успешную сборку. LibreOffice имеет 19 репозиториев git 1, названных как начальный загрузчик и оставшихся на один уровень ниже, называемых писателем, calc, postprocess, base и т. Д. В нем есть скрипт maned g для одновременного запуска команд git во всех репозиториях вместо того, чтобы запускаться тогда по отдельности .

После клонирования я создал патч, который был помещен в удаленный репозиторий. В этот момент все мои изменения были зафиксированы (т. Е. git diff ничего не выводит), и статус таков, что я - коммит перед веткой master.

Теперь, когда я запускаю ./g pull -r, я получаю этот вывод:

victor@victor-laptop:~/git/libo$ ./g pull -r
===== main repo =====
Current branch master is up to date.
===== artwork =====
Current branch master is up to date.
===== base =====
Current branch master is up to date.
===== calc =====
Current branch master is up to date.
===== components =====
Current branch master is up to date.
===== extensions =====
Current branch master is up to date.
===== extras =====
Current branch master is up to date.
===== filters =====
Current branch master is up to date.
===== help =====
Current branch master is up to date.
===== impress =====
Current branch master is up to date.
===== libs-core =====
Current branch master is up to date.
===== libs-extern =====
Current branch master is up to date.
===== libs-extern-sys =====
Current branch master is up to date.
===== libs-gui =====
From http://anongit.freedesktop.org/git/libreoffice/libs-gui
   08137a2..d314277  master     -> origin/master
First, rewinding head to replay your work on top of it...
Fast-forwarded master to d3142771895c2e9ce029e3b52af7f1ea1b437a6b.
===== postprocess =====
Current branch master is up to date.
===== sdk =====
Current branch master is up to date.
===== testing =====
Current branch master is up to date.
===== ure =====
Current branch master is up to date.
===== writer =====
U   sw/source/core/doc/docdesc.cxx
U   sw/source/core/frmedt/fews.cxx
M   sw/source/core/inc/SwXMLBlockExport.hxx
U   sw/source/core/inc/UndoCore.hxx
U   sw/source/core/inc/ascharanchoredobjectposition.hxx
U   sw/source/core/inc/frame.hxx
Pull is not possible because you have unmerged files.
Please, fix them up in the work tree, and then use 'git add/rm <file>'
as appropriate to mark resolution, or use 'git commit -a'.

, которая показывает некоторую проблему с некоторыми файлами в модуле записи (sw), и упомянутые файлы - некоторые из тех, которые использовались в патче, который я добавил.

git diff показывает это:

victor@victor-laptop:~/git/libo$ cd sw
victor@victor-laptop:~/git/libo/sw$ git diff
diff --cc sw/source/core/doc/docdesc.cxx
index 0900b18,52b984e..0000000
--- a/sw/source/core/doc/docdesc.cxx
+++ b/sw/source/core/doc/docdesc.cxx
@@@ -216,7 -216,7 +216,11 @@@ void SwDoc::ChgPageDesc( sal_uInt16 i, 
      if( rChged.GetNumType().GetNumberingType() != pDesc->GetNumType().GetNumbe
      {
          pDesc->SetNumType( rChged.GetNumType() );
++<<<<<<< HEAD
 +        // den Seitennummernfeldern bescheid sagen,
++=======
+         // Bug 64121 - den Seitennummernfeldern bescheid sagen,
++>>>>>>> Removal of bogus comments in writer module
          //            das sich das Num-Format geaendert hat
          GetSysFldType( RES_PAGENUMBERFLD )->UpdateFlds();
          GetSysFldType( RES_REFPAGEGETFLD )->UpdateFlds();
diff --cc sw/source/core/frmedt/fews.cxx
index 6fe4bf0,4dc82ff..0000000
--- a/sw/source/core/frmedt/fews.cxx
+++ b/sw/source/core/frmedt/fews.cxx
@@@ -1266,6 -1267,7 +1266,10 @@@ Size SwFEShell::GetGraphicDefaultSize(
      return aRet;
  }

++<<<<<<< HEAD
++=======
+ // add output parameter <bVertL2R>
++>>>>>>> Removal of bogus comments in writer module
  sal_Bool SwFEShell::IsFrmVertical(const sal_Bool bEnvironment, sal_Bool& bRTL,
  {
      sal_Bool bVert = sal_False;
diff --cc sw/source/core/inc/UndoCore.hxx
index e8fda05,99f4722..0000000
--- a/sw/source/core/inc/UndoCore.hxx
+++ b/sw/source/core/inc/UndoCore.hxx
@@@ -133,6 -133,7 +133,10 @@@ class SwUndoFmtColl : public SwUndo, pr
      void DoSetFmtColl(SwDoc & rDoc, SwPaM & rPaM);

  public:
++<<<<<<< HEAD
++=======
+ //    SwUndoFmtColl( const SwPaM&, SwFmtColl* );
++>>>>>>> Removal of bogus comments in writer module
      SwUndoFmtColl( const SwPaM&, SwFmtColl*,
                     const bool bReset,
                     const bool bResetListAttrs );
@@@ -202,6 -203,7 +206,10 @@@ public
      virtual void RepeatImpl( ::sw::RepeatContext & );
  };

++<<<<<<< HEAD
++=======
+ //--------------------------------------------------------------------
++>>>>>>> Removal of bogus comments in writer module

  const int nUndoStringLength = 20;

diff --cc sw/source/core/inc/ascharanchoredobjectposition.hxx
index 16dde41,2f868a9..0000000
--- a/sw/source/core/inc/ascharanchoredobjectposition.hxx
+++ b/sw/source/core/inc/ascharanchoredobjectposition.hxx
@@@ -140,7 -140,7 +140,11 @@@ namespace objectpositionin
              Point GetAnchorPos() const;

             // calculated relative position to base line for object position ty
++<<<<<<< HEAD
 +
++=======
+            
++>>>>>>> Removal of bogus comments in writer module
              SwTwips GetRelPosY() const;

            // determined object rectangle including spacing for object position
diff --cc sw/source/core/inc/frame.hxx
index 664f28b,94db9cc..0000000
--- a/sw/source/core/inc/frame.hxx
+++ b/sw/source/core/inc/frame.hxx
@@@ -248,6 -250,9 +248,12 @@@ enum MakePageTyp
      MAKEPAGE_NOSECTION        // Don't create section frames
  };

++<<<<<<< HEAD
++=======
+ // #i28701# - replaced by new class <SwSortedObjs>
+ //typedef SdrObject* SdrObjectPtr;
+ //SV_DECL_PTRARR(SwDrawObjs,SdrObjectPtr,1,1);
++>>>>>>> Removal of bogus comments in writer module

  class SwFrm: public SwClient, public SfxBroadcaster
  {
(END)

и git status показывают это:

victor@victor-laptop:~/git/libo/clone/writer$ git status
# Not currently on any branch.
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   sw/source/core/inc/SwXMLBlockExport.hxx
#
# Unmerged paths:
#   (use "git reset HEAD <file>..." to unstage)
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
#   both modified:      sw/source/core/doc/docdesc.cxx
#   both modified:      sw/source/core/frmedt/fews.cxx
#   both modified:      sw/source/core/inc/UndoCore.hxx
#   both modified:      sw/source/core/inc/ascharanchoredobjectposition.hxx
#   both modified:      sw/source/core/inc/frame.hxx
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   0001-Removal-of-bogus-comments-in-writer-module.patch

Если я пытаюсь разрешить конфликты путем ручного редактирования этих файлов, git сообщает мне, что мой мастер отклонился от источника / мастера. Эта ситуация продолжается в цикле. Пожалуйста, помогите мне. В чем может быть проблема и как я могу ее решить?

1 Ответ

1 голос
/ 13 июня 2011

Почему git предупреждает меня, что моя ветвь отклонилась от master?

Git предупреждает вас, что ваша ветвь отклонилась от master, потому что ваша ветвь отклонилась от master.

Если я правильно понял ситуацию, сначала вы создали новый коммит (назовем его B) поверх master (назовем его A).Git правильно говорит, что вы на один коммит впереди origin master.

A---B

Между тем, другие люди добавили новые коммиты поверх origin 'master:

A---B
 \
  C---D---E

В этот момент ваши master и origin master разошлись.У вас есть один коммит, которого у origin/master нет, а у origin/master есть 3 коммита, которых у вас нет.Одним из этих 3 может быть даже отправленный вами патч (я вижу файл, созданный git format-patch в вашем git status выводе, так что я предполагаю, что вы отправили его как патч);применение патча не создаст точно такой же коммит (по крайней мере, имя коммиттера и метка времени будут другими). ​​

Когда вы делаете git pull, git должен объединить ваш коммит (B) скоммиты, которых у вас нет, создаем коммит слияния (назовем его F):

A---B-------F
 \         /
  C---D---E

Обратите внимание, что, опять же, origin/master не имеет ваших коммитов (B и F thisвремя).Если кто-то добавит новые коммиты к origin/master, вам придется снова объединяться.

Теперь, как выйти из этой ситуации?Есть несколько способов.Один из них - перенести ваши изменения в origin, так что теперь в нем есть все, что у вас есть.Другой способ - отказаться от коммитов и сбросить master на origin/master.И третий - перебазировать ваши коммиты поверх origin/master.

Если я правильно догадываюсь, что вы отправили свои изменения по электронной почте через git format-patch, и они уже были применены, лучший выход в вашемДело в том, чтобы сбросить master на origin/master.Чтобы избежать этой проблемы в будущем, лучше всего работать в отдельной ветке и переключиться обратно на master, прежде чем извлекать изменения из восходящего потока.

...