Ответ 1
Переключение ветвей несет с вами незафиксированные изменения. Перенесите сначала, запустите git checkout .
, чтобы отменить их, или запустите git stash
перед переключением. (Вы можете вернуть свои изменения с помощью git stash apply
)
Я действительно новичок в git, и я пытался понять, почему git продолжает показывать, что я изменил в одной ветке в другой ветке, когда я запускаю git checkout для переключения между ветвями. Сначала я попытался не с помощью git добавить и не работать. Тем не менее, я попытался использовать git add, но не исправил проблему. Я еще не использовал git commit.
Это в основном то, что я делаю:
$ git clone <a_repository>
$ git branch
* master
$ git branch testing
$ git checkout testing
...edit a file, add a new one, delete...
$ git status
# On branch testing
# Changed but not updated:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted: file1.txt
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# file2.txt
no changes added to commit (use "git add" and/or "git commit -a")
$ git branch
master
* testing
$ git checkout master
D file1.txt
Switched to branch 'master'
$ git status
# On branch master
# Changed but not updated:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted: file1.txt
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# file2.txt
no changes added to commit (use "git add" and/or "git commit -a")
Я думал, что, используя ветки, независимо от того, что вы делаете в одной ветке, он невидим для всех других ветвей. Разве это не причина создания ветвей?
Я попытался использовать "git add", но изменения видны в обеих ветвях. Нужно ли запускать "git commit" перед переключением между ветвями, чтобы избежать этого?
Переключение ветвей несет с вами незафиксированные изменения. Перенесите сначала, запустите git checkout .
, чтобы отменить их, или запустите git stash
перед переключением. (Вы можете вернуть свои изменения с помощью git stash apply
)
Короткий ответ: да, вам нужно совершить. Убедитесь, что вы делаете это на правой ветке, хотя!
Ветвь - это указатель на фиксацию. Когда вы завершаете фиксацию ветки, ветвь переходит к новой фиксации. Когда вы проверяете ветку, вы проверяете фиксацию, на которую указывает. (Вы можете думать о фиксации в виде снимков вашего рабочего дерева.)
Итак, если у вас есть изменения, которые вы не совершили, они не будут затронуты переключением ветвей. Конечно, если коммутационные ветки несовместимы с вашими изменениями, git checkout
просто откажется это сделать.
git add
- это команда для изменения настроек, которую вы затем совершите. Он не записывает эти изменения в историю репозитория. Он просто помещает их в промежуточную область (индекс); git commit
затем использует содержимое этой промежуточной области для создания коммитов.
Даже я столкнулся с той же проблемой. Вы должны совершить любые изменения, если у вас есть. Поменяйте ветку и вытяните новые изменения. Даже удалите папку node_modules, если вы не добавили в gitignore. После получения новых изменений запустите npm i. Он должен работать.