Создать новую ветку без локальных коммитов - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть несколько изменений в моей текущей ветви под названием "foo".

Я хочу создать новую ветку под названием "bar" из моей текущей ветви.

Но новая ветка должнане содержит изменений (зафиксированных изменений в моей локальной системе), которые находятся в моей текущей ветке.

Пример

$ git clone ssh://svc@somerepo.git
$ cd somerepo
$ ls
test1 test2 test3
$ cat test1 test2 test3
< no output, all these 3 files are empty >
$ echo "testing" >> test1
$ git commit -am "test"

Теперь мне нужно создать новую ветку под названием new-branch из моей текущей ветки, эта ветвь не должна содержать никаких изменений - например, изменения "test" commit (meanвсе три вышеупомянутых текстовых файла ничего не содержат) и отправьте их на удаленный компьютер.

Есть ли какая-либо возможность, которую мы можем сделать?

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

Я хочу создать новую ветвь с именем "bar" из моей текущей ветки.

Но новая ветвь не должна содержать изменений, которые есть в моей текущей ветке.

Поскольку вы указали, что не хотите, чтобы local фиксировал в foo, но вы хотите включить их в удаленную ветку, вы не должны создавать ветку bar из вашейлокальная ветвь foo, но из удаленной foo ветки:

git checkout -b bar origin/foo

Это создаст ветку bar с текущим состоянием foo в вашей исходной репозитории, т.е. не содержит локальных коммитов наfoo.

0 голосов
/ 04 февраля 2019

Да, это возможно.

Вот ваше дерево мерзавцев:

----A---*            <---master

Commit A имеет 3 пустых файла.И в настоящее время вы внесли изменения в файл test1, но еще не зафиксировали.Так что в этом сценарии вам просто нужно создать новую ветку с помощью команды

git checkout -b "new-branch"

. Это создаст:

      ---*            <---master
     /
----A                 <--- new-branch

Это базовый git.Вы делаете ветки из идентификаторов коммитов.Также возможно даже создать ветку / тег / и т. Д. Из идентификатора коммита.Отметьте здесь

После того, как вы сделали новую ветку, вы можете нажать на нее, используя

git push --set-upstream origin new_branch
...