Git checkout - как не потерять изменения в рабочем каталоге? - PullRequest
1 голос
/ 23 октября 2019

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

D       src/abstracts/media/tea-background.png
M       src/actions/actionTypes.js
M       src/actions/customerActions.js
M       src/actions/deliveryActions.js

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

Как мне вернуться к мастеру и зафиксировать эти изменения?

Ответы [ 3 ]

1 голос
/ 23 октября 2019

Вывод git status здесь выше является результатом сравнения git между текущим состоянием рабочего каталога и HEAD.

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

Вы можете просто git checkout master снова, и вынайти себя в исходной ситуации с сохранением ваших изменений.

1 голос
/ 23 октября 2019

Предположим, что вы были на ветке master и у вас были эти (незафиксированные) изменения, затем вы запустили

git branch new-branch # create branch
git checkout new-branch

, в этом случае вы все равно выполняете тот же коммит, что и master. И master, и new-branch указывают на один и тот же коммит. Вы можете безопасно запустить

git checkout master

, чтобы зафиксировать ваши изменения.

Большинство git команд гарантируют, что вы не потеряете свои файлы / изменения, если вы не используете --hard, --force или аналогичные параметры.

Если вы хотите увидеть свое место в истории git, я бы порекомендовал эту команду:

git log --all --graph --oneline --decorate
0 голосов
/ 23 октября 2019

В моем случае, при создании новой ветви с существующими локальными изменениями я буду использовать git stash save 'some message', а затем использовать git branch new-branch # create branch, что не менее важно, с использованием git stash apply 'some message' или git pop для применения ваших локальных изменений,затем с процедурой noraml git commit -m 'XXX' зафиксировать ваши измененные файлы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...