Clonar, Push & Pull
O Origin está atualmente disponível em beta inicial. Você pode criar repositórios, fazer push e pull com o Git, espelhar do GitHub, navegar e pesquisar código, abrir e mergear pull requests e compartilhar com sua equipe do Cherri Code.
Envie todo e qualquer feedback para [email protected] para nos ajudar a melhorar o produto.
O Origin funciona com o Git padrão. Abra um repositório em cursor.com/codebase, selecione o menu suspenso verde Code e copie a URL de clonagem.
Clonar via HTTPS
O menu Code inclui uma aba HTTPS:
https://origin.cursor.com/{owner}/{repo}.gitExemplo:
git clone https://origin.cursor.com/acme/checkout.gitClonar usando a CLI do Origin
O mesmo menu tem uma aba CLI do Origin com configuração para a CLI. Primeiro, instale e faça login:
curl -fsSL https://downloads.cursor.com/origin/install.sh | shorigin auth loginConsulte Instalar a CLI do Origin.
Autenticar
Faça login na CLI do Origin antes de realizar a primeira operação do Git, caso ainda não tenha feito isso:
origin auth loginDepois, faça clone, consulte, faça pull ou push com o Git.
Adicione um remoto a um repositório existente
git remote add origin https://origin.cursor.com/{owner}/{repo}.gitgit push -u origin mainPara manter o GitHub e a Origin em paralelo durante a avaliação:
git remote set-url --add --push origin https://github.com/acme/checkout.gitgit remote set-url --add --push origin https://origin.cursor.com/acme/checkout.gitPara copiar todo o histórico do GitHub para o Origin, prefira o espelhamento.
Repositórios do GitHub espelhados
Um repositório espelhado do GitHub usa a mesma URL HTTPS de clonagem:
https://origin.cursor.com/{owner}/{repo}.gitO GitHub continua sendo a fonte da verdade. O git push para este remoto é enviado ao GitHub. A origin é atualizada depois que o GitHub aceita o push.
Quando o GitHub estiver indisponível, continue trabalhando na cópia da Origin com branches origin/* e origin push local. Leituras de um repositório já sincronizado ainda podem funcionar pela mesma URL HTTPS de clonagem. O batch do Git LFS não tem failover. /local é o caminho de gravação suportado enquanto o GitHub estiver fora do ar.
Branches forge-local em repositórios espelhados
Em um repositório espelhado, os branches origin/* são o seu espaço de trabalho na cópia do Origin. Use-os para continuar trabalhando quando o GitHub estiver indisponível ou para qualquer outro estado do git que você queira manter apenas no Origin. Essas referências do Git permanecem no Origin: elas nunca sincronizam a partir do GitHub nem para o GitHub.
O Origin não sincroniza branches do GitHub com o nome origin ou origin/.... Isso é intencional, para que um branch do GitHub com esse nome não sobrescreva o que você enviou com origin push local. Os feature branches que devem virar pull requests no GitHub continuam usando um git push origin normal.
origin push local
O origin push local grava esses branches exclusivos do Origin. Ele não substitui o git push origin.
O git push origin <branch> usa a URL de clonagem e, em um espelho inbound, chega ao GitHub. Já o origin push local faz o seguinte:
- Confirma que o remoto
origindo checkout é um repositório Origin espelhado de forma inbound - Cria ou atualiza um remoto do Git chamado
origin-localemhttps://origin.cursor.com/{owner}/{repo}.git/local - Restringe os refspecs de consultar e push desse remoto a
refs/heads/origin/* - Faz push de todos os branches locais
origin/*para/local
O Origin não reescreve o nome. origin/my-state é armazenado como refs/heads/origin/my-state.
git branch origin/my-state HEADorigin push localApós a primeira execução, git remote -v inclui:
origin-local https://origin.cursor.com/{owner}/{repo}.git/local (fetch)origin-local https://origin.cursor.com/{owner}/{repo}.git/local (push)git push origin-local e git fetch origin-local usam o mesmo refspec com escopo. origin push local --dry-run exibe o push sem enviá-lo. --remote <name> escolhe um nome de remoto diferente. Não passe --remote origin nem --remote github; esses remotos continuam sendo o upstream vinculado ao GitHub.
O remoto origin já deve apontar para o Origin:
https://origin.cursor.com/{owner}/{repo}.git/local existe apenas em espelhos inbound. Em um repositório criado diretamente no Origin, faça push de qualquer branch para origin.
/local é habilitado por repositório. Se o git relatar que o repositório não foi encontrado, é porque o endpoint ainda não está habilitado para esse repositório. Mensagens de remote rejected por ref indicam que o server recusou um ref fora de origin/.
Nomes de branch que começam com origin/
A correspondência é feita em um segmento de path após origin/. Um branch chamado exatamente origin é reservado e não pode receber push para /local. Um nome como original/backup também está fora do namespace.
Em mirrors inbound:
- Push para
/local. Somente refsorigin/<name>são aceitas. Todo o restante é rejeitado com uma message pedindo que você faça o push dessa ref para o remoto upstream. - Consultar do GitHub. A sincronização inbound ignora
origineorigin/*. Isso é proposital: um branch do GitHub com esse nome não pode sobrescrever o que você enviou comorigin push local. - Push para a URL de clonagem.
git push origin origin/my-stateainda enviaorigin/my-statepara o GitHub. O Origin não vai importar esse branch do GitHub na próxima sincronização. - Pull requests. Agentes em nuvem em um repositório espelhado abrem GitHub pull requests a partir de branches comuns que você envia ao GitHub. Um branch
origin/*não está no GitHub, portanto não pode ser o head de um GitHub pull request.
O git também usa origin/ para refs de remoto-tracking: origin/main significa o branch main no remoto origin. Crie o branch local com um nome explícito (git branch origin/my-state HEAD ou git switch -c origin/my-state) para não fazer check out do branch de remoto-tracking por engano.
Quando o GitHub estiver indisponível, ou sempre que você quiser o estado do git apenas na cópia do Origin. Crie um branch origin/... e execute origin push local. Para trabalhos que você quer no GitHub, incluindo pull requests, execute git push origin.
Não. O nome do branch no Origin é o mesmo nome local. git fetch origin-local os rastreia como origin-local/origin/<name> porque é assim que o git nomeia refs de remoto-tracking, e não porque o Origin remove ou reescreve o prefix.
O Origin não importa esse branch. A sincronização ignora branches do GitHub chamados origin ou origin/..., para que não possam sobrescrever o que você enviou com origin push local.
Fazer pull das atualizações mais recentes
git pull origin mainSolução de problemas
Se o clone ou o push falhar, confirme se você iniciou sessão com origin auth login. Consulte Instalar a CLI do Origin.
Se o shell informar command not found: origin após a instalação, adicione ~/.local/bin ao seu PATH (no zsh: acrescente export PATH="$HOME/.local/bin:$PATH" a ~/.zshrc e execute source ~/.zshrc). Os detalhes estão na página da CLI.