rama - git pull origin master
Cómo crear una nueva rama vacía para un nuevo proyecto (5)
Estamos utilizando un repositorio git para almacenar nuestro proyecto. Tenemos nuestras sucursales partiendo de la sucursal original. Pero ahora queremos crear un pequeño proyecto nuevo para rastrear parte de la documentación. Para eso nos gustaría crear una nueva rama vacía para comenzar a almacenar nuestros archivos, y me gustaría que otros usuarios de la red clonen esa rama.
¿Cómo podemos hacer eso?
Probé algunas cosas, pero no funcionaron.
$ mkdir proj_doc; cd proj_doc
$ git init
$ git add .
$ git commit -m ''first commit''
$ git br proj_doc
$ git co proj_doc
$ git br -d master
$ git push origin proj_doc
Parece empujar la rama bien, pero cuando hago una búsqueda o extracción, descarga información de otras ramas, y luego también obtengo algunos archivos adicionales de otros proyectos. ¿Cuál es la mejor solución?
Digamos que tienes una rama master
con archivos / directorios:
> git branch
master
> ls -la # (files and dirs which you may keep in master)
.git
directory1
directory2
file_1
..
file_n
Paso a paso cómo hacer una rama vacía:
-
git checkout —orphan new_branch_name
- Asegúrese de estar en el directorio correcto antes de ejecutar el siguiente comando:
ls -la |awk ''{print $9}'' |grep -v git |xargs -I _ rm -rf ./_
-
git rm -rf .
-
touch new_file
-
git add new_file
-
git commit -m ''added first file in the new branch''
-
git push origin new_branch_name
En el paso 2, simplemente eliminamos todos los archivos localmente para evitar confusiones con los archivos de su nueva sucursal y los que mantiene en la rama master
. Luego, desvinculamos todos esos archivos en el paso 3. Finalmente, el paso 4 y después están trabajando con nuestra nueva rama vacía.
Una vez que haya terminado, puede cambiar fácilmente entre sus ramas:
git checkout master
git checkout new_branch
Haz una nueva rama vacía como esta:
true | git mktree | xargs git commit-tree | xargs git branch proj-doc
Si sus archivos de proj-doc ya están en un commit bajo un solo subdirectorio, puede hacer la nueva rama de esta manera:
git commit-tree thatcommit:path/to/dir | xargs git branch proj-doc
lo que podría ser más conveniente que la git branch --orphan
si eso te dejara con un montón de git rm
y git mv
ing.
Tratar
git branch --set-upstream proj-doc origin/proj-doc
y ver si eso ayuda con su problema de obtener demasiado. Además, si realmente solo desea obtener una única rama, es más seguro especificarla en la línea de comandos.
La respuesta correcta es crear una rama huérfana. Explico cómo hacer esto en detalle en mi blog: http://sidja.in/post/62663941071
...
Antes de comenzar, actualice a la última versión de GIT. Para asegurarse de que está ejecutando la última versión, ejecute
which git
Si escupe una versión anterior, es posible que deba aumentar su RUTA con la carpeta que contiene la versión que acaba de instalar.
Ok estamos listos Después de hacer un cd en la carpeta que contiene tu git checkout, crea una rama huérfana. Para este ejemplo, nombraré la rama "mybranch".
git checkout --orphan mybranch
Eliminar todo en la rama huérfana.
git rm -rf .
Hacer algunos cambios
vi README.txt
Añade y confirma los cambios.
git add README.txt git commit -m "Adding readme file"
Eso es. Si tu corres
git log
Notarás que el historial de confirmaciones comienza desde cero. Para volver a la rama maestra, simplemente ejecuta
git checkout master
Puedes volver a la rama huérfana ejecutando
git checkout mybranch
Puede crear una rama como un huérfano:
git checkout --orphan <branchname>
Esto creará una nueva rama sin padres. Luego, puede borrar el directorio de trabajo con:
git rm --cached -r .
y agregue los archivos de documentación, confírtelos y empújelos a github.
Una extracción o recuperación siempre actualizará la información local sobre todas las sucursales remotas. Si solo desea extraer / obtener la información de una sola rama remota, debe especificarla.
Si la versión de git no tiene la opción --orphan, este método debe usarse;
git symbolic-ref HEAD refs/heads/<newbranch>
rm .git/index
git clean -fdx
Despues de hacer algunos trabajos
git add -A
git commit -m <message>
git push origin <newbranch>