Как создать удаленный ветвь Git?
Я создал локальную ветвь, которую я хочу "нажать" вверх по течению. В Qaru есть аналогичный вопрос о том, как отслеживать только что созданную удаленную ветвь.
Однако мой рабочий процесс немного отличается. Сначала. Я хочу создать локальную ветвь, и я буду только подталкивать ее вверх по потоку, когда я буду удовлетворен и хочу поделиться своей веткой.
- Как мне это сделать? (мои поисковые запросы Google, похоже, ничего не придумали).
- Как я могу сказать моим коллегам, чтобы вытащить его из восходящего репозитория?
ОБНОВЛЕНИЕ С Git 2.0 есть более простой ответ, который я написал ниже: qaru.site/info/296/...
Ответы
Ответ 1
Решение Simple Git 2. 0+:
Начиная с Git 2.0, поведение стало проще:
Вы можете настроить git с push.default = current
чтобы упростить жизнь:
Я добавил это, так что теперь я могу просто нажать новую ветку вверх по течению с
$ git push -u
-u
будет отслеживать удаленную ветвь с тем же именем. Теперь с этой конфигурацией вы будете автоматически угадывать удаленную ссылку на git push. Из документации git.config:
push.default
Определяет действие, которое должен выполнить git push, если явно не указан refspec.
push.default = current
- нажать текущую ветку, чтобы обновить ветку с тем же именем на принимающей стороне. Работает как в центральном, так и не центральном рабочих процессах.
Для меня это хорошее упрощение моего повседневного рабочего процесса в Git. Параметр конфигурации учитывает "обычный" вариант использования, когда вы добавляете ветку локально и хотите создать ее удаленно. Кроме того, я могу так же легко создавать локальные ветки с удаленных компьютеров, просто используя git co remote_branch_name
(в отличие от использования --set-upstream-to
flag).
Я знаю этот вопрос, и принятые ответы довольно старые, но поведение изменилось, так что теперь существуют опции конфигурации, чтобы упростить ваш рабочий процесс.
Чтобы добавить к вашей глобальной конфигурации Git, запустите это в командной строке:
$ git config --global push.default current
Ответ 2
Сначала вы создаете свою ветвь локально:
git checkout -b <branch-name> # Create a new branch and check it out
Удаленная ветка автоматически создается, когда вы нажимаете ее на удаленный сервер. Поэтому, когда вы чувствуете готовность к этому, вы можете просто сделать:
git push <remote-name> <branch-name>
Где <remote-name>
обычно origin
, имя, которое git предоставляет удалённому вами клону. Тогда ваши коллеги просто потянули бы эту ветвь, и она автоматически создавалась локально.
Обратите внимание, что формально формат:
git push <remote-name> <local-branch-name>:<remote-branch-name>
Но когда вы опускаете один, он предполагает, что оба имени ветки одинаковы. Сказав это, как слово осторожность, не делайте критической ошибки при указании только :<remote-branch-name>
(с двоеточием), или удаленная ветвь будет удалена!
Чтобы последующий git pull
знал, что делать, вы можете вместо этого использовать:
git push --set-upstream <remote-name> <local-branch-name>
Как описано ниже, опция --set-upstream
устанавливает ветвь вверх по течению:
Для каждой ветки, актуальной или успешно нажали, добавили вверх по течению (отслеживание), используемая аргумент-меньше git -pull (1) и другие команды.
Ответ 3
Сначала вы должны создать локальную ветвь
git checkout -b your_branch
После этого вы можете работать локально в своей ветке, когда вы готовы поделиться веткой, нажмите ее. Следующая команда нажимает ветвь на источник удаленного репозитория и отслеживает его
git push -u origin your_branch
Друзья могут достигать вашей ветки, делая:
git fetch
git checkout origin/your_branch
Вы можете продолжить работу в ветке и нажимать, когда захотите, без передачи аргументов на git push (без аргументов git push нажимает мастер на удаленный мастер, your_branch local на remote your_branch и т.д.)
git push
Друзья могут нажать на вашу ветку, совершая коммиты, а затем явно нажимать
... work ...
git commit
... work ...
git commit
git push origin HEAD:refs/heads/your_branch
Или отслеживать ветвь, чтобы избежать аргументов git push
git checkout --track -b your_branch origin/your_branch
... work ...
git commit
... work ...
git commit
git push
Ответ 4
Как указано в предыдущих ответах,
git push <remote-name> <local-branch-name>:<remote-branch-name>
достаточно для нажатия локальной ветки.
Ваши коллеги, могут вывести все удаленные ветки (в том числе новые) с помощью этой команды:
git remote update
Затем, чтобы внести изменения в ветвь, обычный поток:
git checkout -b <local-branch-name> <remote-name>/<remote-branch-name>
Ответ 5
Создайте новую ветвь локально на основе текущей ветки:
git checkout -b newbranch
Зафиксируйте любые изменения, как обычно. Затем нажмите его вверх по течению:
git push -u origin HEAD
Это ярлык для перехода текущей ветки к ветки с тем же именем на origin
и отслеживать ее, чтобы вам не нужно было указывать origin HEAD
в будущем.
Ответ 6
Если вы хотите создать ветку из текущей ветки
git checkout -b {your_local_branch_name}
Вы хотите ветку из удаленной ветки, вы можете попробовать
git checkout -b {your_local_branch_name} origin/<remote_branch_name>
Если вы закончили с изменениями, вы можете добавить файл.
git add -A or git add <each_file_names>
Затем сделайте коммит локально
git commit -m 'your commit message'
Когда вы хотите подтолкнуть к удаленному репо
git push -u origin <your_local_branch_name>
Все вместе будет
git checkout -b bug_fixes
или Если вы хотите создать ветку из удаленной ветки, скажем, разработка
git checkout -b bug_fixes происхождение/разработка
Вы можете нажать на ветку для удаленного репо
git push -u origin bug_fixes
В любое время вы хотите обновить свою ветку из любой другой ветки, скажем, master.
git pull origin master
.
Ответ 7
Если вы хотите просто создать удаленную ветку без локальной, вы можете сделать это следующим образом:
git push origin HEAD:refs/heads/foo
Он толкает все, что есть у вашего HEAD, чтобы отключить foo, которого не было на пульте дистанционного управления.
Ответ 8
Самое простое решение... Drumm Roll... git version 2.10.1 (Apple Git-78)
1) git checkout -b localBranchNameThatDoesNotExistInRemote
2) Do your changes, and do a git commit
3) git push origin localBranchNameThatDoesNotExistInRemote --force
NB. Ветвь, которую вы только что создали в локальной среде, и удаленная несуществующая ветвь, в которую вы пытаетесь перейти, должны иметь одно и то же имя.
Ответ 9
Сначала вы создаете ветвь локально:
git checkout -b your_branch
И затем, чтобы создать ветвь удаленно:
git push --set-upstream origin your_branch
Примечание. Это работает с версиями git:
$ git --version
git version 2.3.0
Ура!
Ответ 10
Создайте ветку на локальной машине и включите эту ветвь:
$ git checkout -b [name_of_your_new_branch]
Нажмите ветвь на github:
$ git push origin [name_of_your_new_branch]
Если вы хотите что-то зафиксировать в своем филиале, убедитесь, что находитесь в своей ветке.
Вы можете увидеть все ветки, созданные с помощью:
$ git branch
Что будет показано:
* approval_messages
master
master_clean
Добавьте новый пульт для вашей ветки:
$ git remote add [name_of_your_remote]
Нажимайте изменения от вашего фиксации в своей ветке:
$ git push origin [name_of_your_remote]
Обновите ветку, когда исходная ветка из официального репозитория обновлена:
$ git fetch [name_of_your_remote]
Затем вам необходимо применить для слияния изменений, если ваша ветка создана из разработки, вам нужно сделать:
$ git merge [name_of_your_remote]/develop
Удалите ветку в локальной файловой системе:
$ git branch -d [name_of_your_new_branch]
Чтобы принудительно удалить локальную ветвь в вашей файловой системе:
$ git branch -d [name_of_your_new_branch]
Удалите ветвь на github:
$ git push origin :[name_of_your_new_branch]
Здесь вся информация
Другой существующий проект
Ответ 11
Создание локальной ветки из существующей ветки (может быть master/develop/any-other-branch).
git checkout -b имя_каталога
Нажмите эту кнопку на пульте дистанционного управления
git push -u имя_данных local_branch_name: remote_branch_name
Здесь
- -u: устанавливает ветвь восходящего потока
- имя_даля: git устанавливает имя по умолчанию как "источник" при создании репозитория. Однако это может быть изменено на другое произвольное имя.
- local_branch_name: имя локальной ветки, которая будет нажата.
- remote_branch_name: имя удаленной ветки, которую мы хотим создать на удаленном компьютере.
Если мы удалим локальные и удаленные имена ветвей, он будет иметь формат
git push -u имя_данных имя_памяти
Это приведет к удалению локальной ветки и с тем же именем, что и имя ветки branch. Локальная ветка также будет отслеживать удалённую ветку.
Ответ 12
Я знаю, что этот вопрос хорошо ответил, но просто хотел перечислить шаги, которые я предпринимаю, чтобы создать новую ветку "myNewBranch" и нажать на удаленный ( "происхождение" в моем случае) и настроить отслеживание. Рассмотрим эту версию "TL; DR":)
# create new branch and checkout that branch
git checkout -b myNewBranch
# now push branch to remote
git push origin myNewBranch
# set up the new branch to track remote branch from origin
git branch --set-upstream-to=origin/myNewBranch myNewBranch
Ответ 13
Теперь с git вы можете просто ввести, когда вы находитесь в правильной ветке
git push --set-upstream origin <remote-branch-name
>
и git создайте для вас ветку происхождения.
Ответ 14
Просто хотел добавить, что while:
git checkout -b {branchName}
Создает новую ветку, она также проверяет, что ветка/делает ее текущей ветвью. Если по какой-то причине все, что вы хотите сделать, это отключить ветвь, но не сделать ее текущей ветвью, тогда вы будете использовать следующую команду:
git branch {branchName}
В первой команде "checkout" делает указанную ветвь вашей текущей ветвью, а "-b" означает: эта ветка еще не существует, поэтому сделайте это для меня.
Ответ 15
Как сделать через Дерево источников
1: Open SourceTree, click on Repository -> Checkout
2 :Click on Create New Branch
3: Select branch where from you want to get code for new branch
4: Give your branch name
5: Push the branch (by click on Push button)
Ответ 16
git push -u <remote-name> <branch-name>
не работает, если вновь созданная ветвь не порождена из того же репо, т.е. если вы не создали новую ветку с помощью git checkout -b new_branch
тогда это не сработает.
Например, я локально клонировал два разных репозитория, и мне пришлось скопировать repo2/branch1 в repo1/и затем отправить его тоже.
Эта ссылка помогла мне перенести мою локальную ветку (клонировано из другого репо) в мое удаленное репо:
Ответ 17
Вот как вы делаете это в eclipse через Egit.
1) Перейдите в представление "Git Repository Exploring" и объясните проект git, в который вы хотите создать ветвь. В разделе Brances → Local.. выберите ветку, для которой вы хотите создать ветку (в моем случае я выбрал master.. вы можете выбрать другую другую ветку, если хотите).. затем щелкните правой кнопкой мыши и выберите опцию Create Branch. и выберите опцию checkout this project, а затем нажмите кнопку завершения.
2) Теперь из проекта explorer выберите проект.. щелкните правой кнопкой мыши команду Team → Push Branch.
Будет создана новая удаленная ветвь. Вы можете указать имя ветки своим коллегам, чтобы они могли его вытащить.
Ответ 18
Я использую это, и это очень удобно:
git config --global alias.mkdir '!git checkout -b $1; git status; git push -u origin $1; exit;'
Usage: git mkdir NEW_BRANCH
Вам даже не нужен статус git; может быть, я просто хочу убедиться, что все идет хорошо...
Вы можете иметь ОБА ЛОКАЛЬНУЮ и УДАЛЕННУЮ ветвь с помощью одной команды.
Ответ 19
Вы можете сделать это за 2 шага:
1. Используйте checkout
для создания локальной ветки:
git checkout -b yourBranchName
2. Используйте команду push
, чтобы автоматически создать ветку и отправить код в удаленный репозиторий:
git push -u origin yourBanchName
Есть несколько способов сделать это, но я думаю, что этот способ действительно прост.