git push говорит все актуальное, хотя у меня есть локальные изменения

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

Но сегодня я нахожу, что даже если у меня есть локальные изменения и фиксация в локальном репозитории, при запуске $ git ls-remote origin df80d0c64b8e2c160d3d9b106b30aee9540b6ece HEAD df80d0c64b8e2c160d3d9b106b30aee9540b6ece refs / heads / master $ git ls-remote. 49c2cb46b9e798247898afdb079e76e40c9f77ea ГОЛОВА df80d0c64b8e2c160d3d9b106b30aee9540b6ece ссылки / главы / мастер df80d0c64b8e2c160d3d9b106b30aee9540b6ece ссылки / пультов ДУ / происхождение / мастер 3a04c3ea9b81252b0626b760f0a7766b81652c0c ссылки / теги / stage3 мастер происхождения он говорит : «Все , что уточненный», но когда я использую Git клон к кассе файлов на удаленном сервере, его не содержит последних изменений. И у меня есть только одна ветка с именем master и один удаленный сервер с именем origin.

PS: Это то, что git отображает при запуске ls-remote, я не уверен, помогает ли это

$ git log -1
# note the SHA-1 of latest commit
$ git checkout master
# reset your branch head to your previously detached commit
$ git reset --hard <commit-id>

git,gitosis,

167

Ответов: 16


Вы бы не работали с обособленным $ git checkout v2.6.18, если это возможно?

Как в:

оторванная головка

что ваша последняя фиксация не является главой филиала.

-b

Как упоминалось на HEADстранице руководства (акцент мой):

Иногда полезно иметь возможность проверять фиксацию, которая не находится на кончике одной из ваших ветвей .
Самый очевидный пример - проверить фиксацию в отмеченной официальной точке выпуска, например:

v2.6.18

Более ранние версии git не позволяли этого и попросили создать временную ветку с использованием этой -bопции, но начиная с версии 1.5.0 указанная выше команда отделяет вас HEADот текущей ветви и непосредственно указывает на фиксацию, названную тегом ( git reset --hard $othercommitв пример выше).

Вы можете использовать все команды git в этом состоянии. Например,
вы можете использовать git merge $othercommitдля дальнейшего перемещения.
Вы можете вносить изменения и создавать новую фиксацию поверх отдельной HEAD .
Вы даже можете создать слияние, используя git checkout master.

Состояние, в котором вы находитесь, когда ваш HEAD отсоединен, не регистрируется ни одной веткой (что естественно - вы не находитесь в какой-либо отрасли).
Это означает, что вы можете отменить свои временные коммиты и слияния, переключившись на существующую ветку (например git prune), а позже git gcили на $ git log -g -2 HEAD сборщик мусора.
Если вы сделали это по ошибке, вы можете запросить reflog для HEAD, где вы были, например

git commit

Err .. Если вы git noob, вы уверены, что у вас есть git pushраньше git push origin your-new-branch-name ? Я сделал эту ошибку в первый раз!


Может быть, вы подталкиваете новое местное отделение?

Новая локальная ветвь должна быть явно нажата:

git push

Только одна из этих вещей о git ... Вы клонируете репо, делаете ветку, совершаете некоторые изменения, нажимаете ... «Все в актуальном состоянии». Я понимаю, почему это происходит, но этот рабочий процесс крайне недружелюбен для новичков.


Другая ситуация, которая важна для понимания: Тип состояния по умолчанию для git - это то, что вы работаете в ветке «master». И для многих ситуаций вы просто будете входить в это как свою основную рабочую ветку (хотя некоторые люди получают фантазию и делают другие вещи).

Во всяком случае, это всего лишь одна ветка. Поэтому ситуация, в которой я могу попасть, - это:

Моя активная ветвь фактически не является главной ветвью. ... Но я обычно выполняю команду: git push origin master(и я сделал это раньше git push, так что это сокращение от THAT).

Поэтому я обычно нажимаю ведущую ветвь на общий репо ... что, вероятно, является хорошей чистой вещью, в моем случае ...

Но я забыл, что изменения, над которыми я работал, еще не вошли в мастер-ветку !!!

Поэтому каждый раз, когда я пытаюсь git push, я вижу «Все в актуальном состоянии», я хочу кричать, но, конечно, это не ошибка Git! Это мое.

Поэтому вместо этого я соединяю свою ветку с мастером, а затем нажимаю, и все снова радует.


Моя проблема заключалась в том, что мой локальный филиал имел другое имя, чем удаленная ветка. Я смог сделать следующее:

$ git push origin local-branch-name:remote-branch-name

(Кредит https://penandpants.com/2013/02/07/git-pushing-to-a-remote-branch-with-a-different-name/ )

Go, Gitosis,
Похожие вопросы
Яндекс.Метрика