Как мне перестать выдвигать несколько удаленных веток в git? (ака, как мне отследить удаленные ветки git?)
Пытался использовать то, что здесь, но это не решает проблемы для меня.
У меня есть локальный репозиторий в git, клонированный из удаленного репо, development
, Я ветвлюсь локально, чтобы поиграть с новой функцией в ветке под названием newBranchName
и позвонить git push origin newBranchName
настроить новую ветку на удаленном репо.
Теперь, когда я пытаюсь нажать, кажется, что мерзавец толкает мой newBranchName
местный филиал во все, что старый филиал отслеживается, а также Я хочу, чтобы это прекратилось.
Вот расширенный образец того, что я имею в виду. Я собираюсь создать локальную ветку, добавить файл, зафиксировать локально, а затем нажать на новую ветку на удаленном сервере. Все идет нормально.
Administrator@BOXEN /path/to/working/dir (oldBranch)
$ git branch testingStuff
Administrator@BOXEN /path/to/working/dir (oldBranch)
$ git checkout testingStuff
Switched to branch 'testingStuff'
Administrator@BOXEN /path/to/working/dir (testingStuff)
$ vim test.txt
Administrator@BOXEN /path/to/working/dir (testingStuff)
$ git add test.txt
Administrator@BOXEN /path/to/working/dir (testingStuff)
$ git commit -a
[testingStuff 11468d8] Testing git; can trash this branch.
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 test.txt
Administrator@BOXEN /path/to/working/dir (testingStuff)
$ git push origin testingStuff
Counting objects: 4, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 299 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
To http://url/to/remote/repo.git
* [new branch] testingStuff -> testingStuff
Теперь я отредактирую этот файл test.txt, передам изменения и отправлю. Это то, что смущает меня.
Administrator@BOXEN /path/to/working/dir (testingStuff)
$ vim test.txt
Administrator@BOXEN /path/to/working/dir (testingStuff)
$ git commit -a
[testingStuff 2be7063] more testing git
1 files changed, 1 insertions(+), 0 deletions(-)
Administrator@BOXEN /path/to/working/dir (testingStuff)
$ git push
Counting objects: 5, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 276 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
To http://url/to/remote/repo.git
11468d8..2be7063 testingStuff -> testingStuff
! [rejected] oldBranch -> remoteTrackedByOldBranch (non-fast-forward)
error: failed to push some refs to 'http://url/to/remote/repo.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again. See the
'Note about fast-forwards' section of 'git push --help' for details.
Я хочу продолжать настаивать на testingStuff
удаленно, но хочу перестать давить на remoteTrackedByOldBranch
когда я печатаю git push
, Я не хочу удалять какую-либо ветку - кажется, ряд ответов на подобные вопросы предлагают скорее удалить, чем отследить. Также я не хочу знать, как нажать на конкретную ветку, только явно указав ее в команде git push. Так много ошибок мышечной памяти. я хочу git push
подтолкнуть к origin/testingStuff
только.
Я уже безрассудно (слово, которое доказывает себя) убил мой.git/config, пытаясь добиться этого, и он все еще подталкивает к remoteTrackedByOldBranch
,
РЕДАКТИРОВАТЬ: Вот как выглядит мой файл.git/config после выполнения вышеуказанного:
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
hideDotFiles = dotGitOnly
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = http://url/to/remote/repo.git
[branch "master"]
remote = origin
merge = refs/heads/master
[branch "oldBranch"]
remote = origin
merge = refs/heads/oldBranch
Ничего о testingStuff
там филиал.
РЕДАКТИРОВАТЬ: git branch -avv
выход:
Administrator@BOXEN /path/to/working/dir (testingStuff)
$ git branch -avv
master 721aa61 initial setup
projectFork1 e132f5f Fixed Construction grid labels getting sliced.
projectFork2 1d20317 initial load
oldBranch 1d20317 initial load
* testingStuff 192f622 Still testing
remotes/origin/HEAD -> origin/master
remotes/origin/empty ec1c694 initial setup
remotes/origin/joeUserFork1 771f43e Initial Load
remotes/origin/master 721aa61 initial setup
remotes/origin/projectFork1 e132f5f Fixed Construction grid labels getting sliced.
remotes/origin/oldBranch 1d20317 initial load
remotes/origin/joeUserFork2 dc605e8 What was sent initially.
remotes/origin/testingStuff 192f622 Still testing
remotes/origin/upload_master 0d8c440 Initial Load
2 ответа
Нажмите только на ветку, на которой вы находитесь
По умолчанию git будет выдвигать все ваши ветви отслеживания всякий раз, когда вы запускаете git push без аргументов. чтобы сделать это только подтолкнуть ветку, на которой вы находитесь
git config push.default upstream # git 1.7.10
git config push.default tracking # older vesions use "tracking" instead of "upstream"
если вы хотите, чтобы git всегда работал таким образом - вы можете использовать ключ --global или просто отредактировать файл ~/.gitconfig в соответствии с вашими потребностями.
Хватит отслеживать удаленную ветку
Конфигурация git - это просто файл. Часто самый простой способ исследовать и / или исправить ваш git config - это просто открыть ваш файл.git/config и отредактировать его.
например, если у вас есть такой раздел в вашем файле.git/config:
[branch "develop"]
remote = origin
merge = refs/heads/develop
rebase = true
и вы делаете это:
[branch "develop"]
rebase = true
твоя ветка нолонжер ничего не отслеживает. Вы также можете просто удалить весь раздел, и git будет действовать так же.
Отношения отслеживания с удаленной веткой поддерживаются в branch.<BRANCHNAME>.remote
а также branch.<BRANCHNAME>.merge
элементы конфигурации, связанные с конкретной веткой. Вы можете увидеть текущую конфигурацию следующим образом:
git config --get-regexp 'branch.remoteTRackedByOldBranch.*'
И вы можете удалить конфигурацию следующим образом:
git config --remove-section branch.remoteTrackedByOldBranch
[Обратите внимание, что это удалит всю конфигурацию, связанную с этой веткой, но вряд ли есть что-то кроме remote
а также merge
Настройки. Очевидно, что вы можете сделать то же самое, отредактировав вручную .git/config
файл.]
После этого изменения git push
больше не должен пытаться протолкнуть эту ветку к удаленному.