Git: Как мне оформить коммит и объединить его с моей веткой? - PullRequest
0 голосов
/ 04 июня 2018

Я сделал серию коммитов в своей ветке.Тем не менее, последние 3 или около того были ошибками - я хочу «вернуть» свою ветку к предыдущему коммиту.

Погуглить проблему, насколько я понимаю, я должен использовать git log, чтобы получить идентификатор коммита, который я хочувернитесь к, затем git checkout <id>.Но я не могу найти информацию за пределами этого.

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

Ответы [ 3 ]

0 голосов
/ 04 июня 2018

когда вы создаете ветку из другой, создаются две строки работ, которые могут принимать строки, отличающиеся от текущей ветви, не могут просматривать коммиты других веток, так как независимы, но если вы закончили свою работу в этой ветви, предположим,называется dev, тогда, если вы хотите запустить только свою основную ветвь (master), вы должны подтвердить, что ваша область старта помечает ваши ветки примерно так: во-первых, вы проверяете вашу текущую ветку с помощью git branch, она показывает имя текущей головы.освоить git checkout master и, наконец, пометить ветки git marge dev (dev = name_of_your_branch), и вы можете показать все журналы двух веток с git log --graph

0 голосов
/ 04 июня 2018

Если вы хотите полностью удалить последний коммит и рабочий каталог, совпадающий с последним, но двумя коммитами (HEAD ~~):

git reset --hard HEAD ~~

Но если вы не хотите изменять историю коммитов (потому что вы хотите сохранить неправильные коммиты или вы уже перенесли их в общий репозиторий), просто вернитесь в более раннее состояние, но сохраните неправильные коммиты, тогда лучше использовать метод iBug с checkout.Проблема с вашим решением состоит в том, что «git checkout не перемещает указатель ветви только указатель головы, поэтому переходите в состояние отсоединенной головы.Если вы извлекаете отдельные файлы и не фиксируете их, тогда ваши указатели остаются на прежнем месте, поэтому вам не нужно объединяться впоследствии.(некоторые пояснения к моему коду: приведенная выше команда перемещает не только указатель HEAD, но и указатель главной ветви на два шага назад к HEAD ~~ и обновляет рабочий каталог (и индекс), чтобы он совпадал с коммитом HEAD ~~

HEAD: текущий коммит HEAD ~: предыдущий коммит HEAD ~~ HEAD ~~~ ..etc)

0 голосов
/ 04 июня 2018

Если вы просто хотите добавить новый коммит, который восстанавливает состояния файлов ,

Сначала удалите все файлы, используя rm (, будьте осторожны, чтобы не удалить .git/).Вы также можете использовать git rm -f, но обратите внимание на .gitignore изменения.

Затем извлеките все файлы из фиксации (получите SHA для фиксации, используя git log):

git checkout 1234567 \*

Здесь звездочка экранирована, чтобы предотвратить расширение оболочки.Git сделает расширение.Если вы используете оболочку Unix, вы также можете использовать одинарные кавычки:

git checkout 1234567 '*'

Зафиксировать извлеченные файлы:

git add -A
git commit

Voilà!

...