tag origin example crear git git-branch git-bare posh-git

origin - ¿Cómo creo una rama maestra en un repositorio Git simple?



git push example (4)

(Todo hecho en poshgit en Windows 8):

git init --bare test-repo.git cd test-repo.git

(La carpeta se crea con archivos y carpetas git-ish dentro)

git status

fatal: esta operación debe ejecutarse en un árbol de trabajo (está bien, así que no puedo usar el estado de git con un repositorio simple; creo que tiene sentido)

git branch

(Nada, parece que el repositorio simple no contiene ninguna rama. ¿Tengo que agregarlos desde un repositorio clonado?)

cd .. mkdir test-clone cd test-clone git clone ../test-repo.git

(Recibo una advertencia sobre la clonación de un repositorio vacío)

cd test-repo

(La solicitud cambia para indicar que estoy en la rama maestra)

git branch

(No muestra resultados - ¿eh?)

git branch master

fatal: no es un nombre de objeto válido: ''maestro''

Um Entonces, ¿cómo creo la rama maestra en mi repositorio desnudo?


De manera predeterminada, no habrá ramas enumeradas y aparecerá solo después de colocar algún archivo. No tienes que preocuparte mucho por eso. Simplemente ejecute todos sus comandos, como crear estructuras de carpetas, agregar / eliminar archivos, comprometer archivos, enviarlos al servidor o crear sucursales. Funciona a la perfección sin ningún problema.

https://git-scm.com/docs


No es necesario un segundo repositorio. Podemos suministrar un directorio ficticio utilizando la opción --work-tree y comandos como checkout y commit start para que funcionen incluso en un repositorio simple. Preparar un directorio ficticio:

$ rm -rf /tmp/empty_directory $ mkdir /tmp/empty_directory

Y ahí van:

$ cd test-repo.git # your fresh bare repository $ git --work-tree=/tmp/empty_directory checkout --orphan master Switched to a new branch ''master'' <--- abort if "master" already exists $ git --work-tree=/tmp/empty_directory commit --allow-empty -m "empty repo" $ git branch * master $ rmdir /tmp/empty_directory

Probado en vainilla git 1.9.1. No verifiqué si posh-git es compatible con --allow-empty para realizar una confirmación sin ningún cambio de archivo (una confirmación de solo mensaje).


Un repositorio simple es casi algo que solo presionas para obtener. No puede hacer mucho directamente "en él": no puede verificar cosas, crear referencias (sucursales, etiquetas), ejecutar el git status , etc.

Si desea crear una nueva rama en un repositorio de Git simple, puede insertar una rama de un clon a su repositorio simple:

# initialize your bare repo $ git init --bare test-repo.git # clone it and cd to the clone''s root directory $ git clone test-repo.git/ test-clone Cloning into ''test-clone''... warning: You appear to have cloned an empty repository. done. $ cd test-clone # make an initial commit in the clone $ touch README.md $ git add . $ git commit -m "add README" [master (root-commit) 65aab0e] add README 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 README.md # push to origin (i.e. your bare repo) $ git push origin master Counting objects: 3, done. Writing objects: 100% (3/3), 219 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) To /Users/jubobs/test-repo.git/ * [new branch] master -> master


Una rama es solo una referencia a un commit. Hasta que no confíes nada en el repositorio, no tienes sucursales. Puedes ver esto en un repositorio no desnudo también.

$ mkdir repo $ cd repo $ git init Initialized empty Git repository in /home/me/repo/.git/ $ git branch $ touch foo $ git add foo $ git commit -m "new file" 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 foo $ git branch * master