git - ваша ветка опережает origin / master на 1 коммит


108

Я новичок в git и работаю над git.

Я добавил несколько файлов в git:

git add <file1>
git add <file2>

затем я хотел отправить это на рассмотрение, но по ошибке

git commit

поэтому файлы, которые я изменил, не проходят проверку.
Теперь, если я введу команду:

git status

это говорит

# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)

Я хочу отменить эту фиксацию, и я хочу отправить эти файлы на проверку, а не на фиксацию. Может ли кто-нибудь сообщить мне, как я могу это сделать?


Если вы хотите отменить фиксацию - ответьте на аналогичный вопрос .
ДМИТРИЙ МАЛИКОВ

1
Я не знаю, что вы используете для проверки кода. Простой ответ на простой вопрос о том, как git reset HEAD^
отменить

Я сбросил HEAD. но затем, когда я пытаюсь нажать, тогда он говорит мне D file1.py, когда я пытался psuh, затем снова он говорит мне, что ваша ветка опережает origin / master на 1 фиксацию
sam

Что вы имеете в виду, когда говорите «Я хочу отправить эти файлы на проверку»? Вы хотите, чтобы другие люди видели ваш коммит?
Джейк Грин

мой код будет сначала рассмотрен, а затем он будет зафиксирован. так что сначала я хочу отправить код для проверки, но по ошибке я совершил
sam

Ответы:


128

Вы не можете толкать ничего, что еще не было совершено. Порядок действий:

  1. Внесите свои изменения.
  2. git add - это этапы внесения ваших изменений
  3. git commit - это фиксирует ваши поэтапные изменения локально
  4. git push - это переносит ваши зафиксированные изменения на удаленный

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

Сообщение, которое вы видите (ваша ветка опережает 1 фиксацию), означает, что в вашем локальном репозитории есть одна фиксация, которая еще не была отправлена.

Другими словами: addи commit- это локальные операции push, pullи fetch- операции, которые взаимодействуют с удаленным.

Поскольку кажется, что там, где вы работаете, существует официальный рабочий процесс контроля версий, вы должны спросить внутри компании, как с этим обращаться.


4
Ага, ладно. так что это означает, что после фиксации я должен его нажать
Сэм

4
Хорошее объяснение - спрашивающий, вероятно, не хочет на самом деле отменять фиксацию, а скорее хочет, чтобы люди проверяли фиксацию, прежде чем отправлять ее в originрепозиторий. Я также рекомендую прочитать несколько руководств / вступлений к git на git-scm.com/documentation
dbr

1
Когда мой статус git говорит: «Ваша ветка опережает origin / develop на 1 коммит». как именно посмотреть, что файлы были изменены? git diff, похоже, ничего не делает
Том

Иногда там работал кто-то другой. Тяни перед толчком
Адриан П.

69

git reset HEAD^ --soft (Сохраните изменения, вернитесь к последней фиксации)

git reset HEAD^ --hard (Отменить изменения, вернуться к последней фиксации)


3
Какое значение имеет ГОЛОВА с морковкой "^"? Я тоже видел, как это писалось без моркови.
Mugen

29

Если вы просто хотите выбросить изменения и вернуться к последней фиксации (той, которой вы хотели поделиться):

git reset --hard HEAD~

Вы можете проверить, чтобы быть абсолютно уверенным в том, что вам нужен this ( git log), потому что вы потеряете все изменения.

Более безопасная альтернатива - бежать

git reset --soft HEAD~ # reset to the last commit
git stash              # stash all the changes in the working tree 
git push               # push changes 
git stash pop          # get your changes back 

21

Я решил это, просто выполнив простой:

git pull

Ничего более. Теперь он показывает:

# On branch master
nothing to commit, working directory clean

Это может вызвать проблемы, если будет создано более одной ветки, что не требуется.
Анил Кумар Арья

1
вы вернулись в удаленный штат и потеряли свою последнюю работу: D
Gucho Ca

13

git сбросить HEAD ^

тогда должны появиться измененные файлы.

Вы можете переместить измененные файлы в новую ветку

использовать

git checkout -b newbranch

git checkout commit -m "files modified"

git push origin newbranch

git checkout master

тогда вы должны быть в чистой ветке, а ваши изменения должны храниться в новой ветке. Позже вы можете просто объединить это изменение с основной веткой


4
git reset HEAD <file1> <file2> ...

удалить указанные файлы из следующего коммита

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.