Copiando una carpeta sin seguimiento a otra twig

¿Hay alguna forma de copyr una carpeta sin seguimiento a otra twig?

Sé que puedes copyr carpetas rastreadas a otra twig haciendo algo como esto:

git checkout mybranch git checkout master -- myfolder 

¿Pero hay una manera de copyr una carpeta que no se rastrea en el maestro, pero se rastrea en la twig en la que quiero copyr?

Estoy intentando hacer esto para las páginas de GitHub y estoy siguiendo esta guía , pero él se compromete a dominarlo y lo empuja hacia las páginas arriba de gh. No quiero hacer eso. Solo quiero que mi compilation genere los documentos y copie los documentos no rastreados a otra twig y luego los empuje hacia arriba.

Lo que tienes aquí es una situación en la que tienes algunos files sin seguimiento que entran en conflicto con los files rastreados en otra twig. Le gustaría cambiar a esa sucursal, pero el checkout no le permitirá.

La solución de "primer nivel" en git es promover estos files sin seguimiento en el índice:

 git add folder 

Ahora todavía no puedes verificar en la sucursal. Sin embargo, se te presenta una nueva posibilidad: puedes git stash save los cambios:

 git stash save 

Ahora puedes cambiar a la twig, y ​​hacer un git stash pop . En este punto, puede tratar conflictos de combinación, si los hay, seguidos de un git reset y listo.

[Actualización: el git add no es necesario porque git stash tiene una opción para include files sin seguimiento!]

Vamos a trabajar a través de un ejemplo completo, que involucra un solo file llamado topicfile que existe solo en una twig, y ​​se crea como un file de trabajo mientras está en el master , pero con diferentes contenidos:

 ~$ mkdir gittest ~$ cd gittest/ ~/gittest$ git init Initialized empty Git repository in /home/kaz/gittest/.git/ ~/gittest$ touch emptyfile ~/gittest$ git add emptyfile ~/gittest$ git commit -m "starting repo" [master (root-commit) 75ea7cd] starting repo 0 files changed create mode 100644 emptyfile ~/gittest$ git branch * master ~/gittest$ git checkout -b topic Switched to a new branch 'topic' ~/gittest$ cat > topicfile a b c d e ~/gittest$ git add topicfile ~/gittest$ git commit -m "topicfile" [topic 875efc5] topicfile 1 file changed, 5 insertions(+) create mode 100644 topicfile ~/gittest$ git checkout master Switched to branch 'master' ~/gittest$ ls emptyfile ~/gittest$ cat > topicfile @ a b c d e f g h ~/gittest$ git add topicfile ~/gittest$ git stash save topicfile Saved working directory and index state On master: topicfile HEAD is now at 75ea7cd starting repo ~/gittest$ git checkout topic Switched to branch 'topic' ~/gittest$ git stash pop Auto-merging topicfile CONFLICT (add/add): Merge conflict in topicfile ~/gittest$ cat topicfile <<<<<<< Updated upstream ======= @ >>>>>>> Stashed changes a b c d e <<<<<<< Updated upstream ======= f g h >>>>>>> Stashed changes ~/gittest$ cat > topicfile # resolve in favor of stashed changes: @ a b c d e f g h ~/gittest$ git add topicfile ~/gittest$ git reset Unstaged changes after reset: M topicfile ~/gittest$ git diff diff --git a/topicfile b/topicfile index 9405325..bea0ebb 100644 --- a/topicfile +++ b/topicfile @@ -1,5 +1,9 @@ +@ a b c d e +f +g +h 

En este punto, podemos confirmar los cambios de nuestro topicfile en la twig de topic y el file aún no se rastrea en el master .

Debido a que hubo conflictos en git stash pop , el alijo todavía existe. Podemos limpiar eso con git stash drop .

La alternativa a todo esto es no solo git add los files no rastreados al índice, sino también a git commit para hacer una confirmación correcta. Entonces podemos seleccionar el compromiso en la twig. Si no queremos que esos files sean rastreados en el master , está bien: podemos git reset --hard HEAD^ más tarde git reset --hard HEAD^ en master para eliminar esa confirmación.

Si la carpeta no está rastreada, entonces simplemente puede checkout la otra twig y no se toca el directory no rastreado.