Git подтолкнуть все файлы в новую ветку - PullRequest
0 голосов
/ 21 сентября 2018

Каждый раз, когда я пытаюсь отправить отдельный файл в новую ветку, все файлы из папки.Когда я удаляю все файлы из репозитория, используя git rm --cached -r ., и загружаю этот файл еще раз, это нормально.Но когда я пытаюсь загрузить некоторые файлы в другую новую ветку, она загружает новые файлы + файлы с последнего нажатия.

Я использовал следующие команды:

git init
git remote add origin master
git branch test
git checkout test
git add <file>
git commit -m "blahblah"
git push origin test

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

1 Ответ

0 голосов
/ 21 сентября 2018

Git не загружает файлы.Git толкает целые коммиты .

Коммит - это снимок всего дерева исходных текстов: все файлы.Вот что git push передает: один или несколько полных снимков.

Когда вы используете git checkout <em>branch</em>, Git преобразует имя branch в конкретный коммит, а затем извлекает это Весь коммит - все его файлы - в ваше рабочее дерево.Это своего рода точка коммитов: они представляют собой набор файлов, которые все объединяют .Используйте набор файлов A, чтобы сделать вещь A на ветви A;использовать другой набор файлов B для выполнения операции B на ветви B;и так далее.Если в наборе файлов есть ошибка, которая является текущей подсказкой некоторой ветви B, вы извлекаете полный набор, исправляете ошибку, добавляете исправления и запускаете git commit, чтобы сказать: Теперь ветвь Bозначает этот новый коммит, который я только что сделал - используя всех этих файлов. Новый коммит представляет новый снимок, который делает вещь B.

Следовательно, git push выдвигает все новыеснимки, которые вы сделали, которых у другого Git уже нет.Они добавляют новые снимки в их коллекцию «всех когда-либо сделанных снимков».

Обратите внимание, что противоположностью push является fetch, а не pull!Этот неправильный глагол произошел из-за маленькой ошибки, допущенной Git на раннем этапе, с которой нам всем приходится жить сейчас.Использование git pull означает запустить git fetch, затем запустить git merge. Это дополнительный шаг, который git push не делает (и не может) делать.Мы получаем, затем объединяем, затем нажимаем;затем мы выбираем, объединяем и снова нажимаем по мере необходимости.Глагол pull объединяет два, но оказывается, что между этими двумя действиями часто есть что-то сделать, или вместо использования merge.Когда нет - когда можно получить и немедленно слить - , тогда git pull более удобно.Но я советую сначала изучить их отдельно.

Подробнее об этом, когда вы будете готовы, см. Что именно делает GIT PUSH?

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