Oportunidad
Estoy buscando una GUI para guardar y ocultar archivos en git, con la capacidad de hacerlo para archivos modificados individuales. Sé que hay una forma de línea de comando para hacerlo, que se ve aquí, pero estoy buscando una forma gráfica. No me importa tanto esconder archivos individuales, sino más bien hacer estallar/aplicar. Estoy ejecutando en Windows 7.
Brett Zamir
vi una recomendacion aquí para agregar los comandos Stash como un menú a “Git GUI” en su <USER HOME directory>\.gitconfig
.
[guitool "Stash/show"]
cmd = git stash show -p
[guitool "Stash/list"]
cmd = git stash list
[guitool "Stash/pop"]
cmd = git stash pop
[guitool "Stash/drop"]
cmd = git stash drop
confirm = yes
También agregué un comando más para hacer el ocultamiento (para usarlo, primero debe organizar, pero no confirmar, los archivos que desea ocultar para que Git realice el “agregar” requerido):
[guitool "Stash"]
cmd = git stash
(Tenga en cuenta que elegí que “alijo” no aparezca como un submenú, pero podría hacerlo).
También puede agregar comandos a través de Git GUI a través de Tools->Add.
El ocultamiento puede ser útil si solo desea olvidar los archivos rápidamente sin molestarse en pensar en un nombre de rama.
axiac
la documentacion de git stash
dice:
Usar
git stash
cuando desea registrar el estado actual del directorio de trabajo y el índice, pero desea volver a un directorio de trabajo limpio. El comando guarda sus modificaciones locales y revierte el directorio de trabajo para que coincida con elHEAD
comprometerse.
Ofrece muy poco apoyo.1 para manejar archivos individuales porque su propósito es almacenar de forma segura sus cambios actuales y llevar rápidamente su árbol de trabajo a un estado limpio (es decir, como estaba inmediatamente después de su última confirmación en la rama actual).
Puede hacer lo que quiera (y de una manera más flexible que ocultar) si crea una nueva rama y confirma los cambios en ella (en cualquier cantidad o combinación que desee) hasta que alcance el estado que desea. Luego solo revisa la rama anterior y listo.
Este enfoque le permite fusionar los cambios en la rama actual más tarde, para seleccionar solo algunas confirmaciones o incluso algunos archivos de ellos.
1 git stash save
proporciona la opción --patch
que permite al usuario seleccionar de forma interactiva fragmentos de la diferencia entre HEAD
y el árbol de trabajo para ser escondido. Permite un control preciso sobre lo que se agrega al alijo.
Discusión adicional
Tu dices:
Estoy usando
git
procedente dePerforce
, por lo que estoy tratando de hacer que Stash encaje en el molde de ‘estantería’, pero creo que ramificar es la mejor manera de hacerlo. Atado a esto es quegitextensions
hace una especie de rama de mis escondites, por lo que es posible que pueda esconderlos, pero tratarlos como una rama cuando tomo archivos individuales.
Internamente, cada alijo es almacenado como una confirmación vinculado al compromiso que fue el HEAD
en el momento en que se creó el alijo, pero no vinculado al alijo anterior (si lo hay). La lista de alijos se almacena como metadatos; los alijos son No enlazado en una rama (oculta).
Más, git stash create
permite la creación de un alijo sin añadirlo a la lista de alijos. Se proporciona para secuencias de comandos y “probablemente no sea el comando que quieres usar” (Cité de la documentación).
-
Gracias. Para aclarar, no creo que el alijo sea realmente como una rama, pero las extensiones de git lo hacen parecer, lo que puede ser bueno o malo. git extensions proporciona una capa de abstracciones y, a veces, no está exactamente claro lo que estoy haciendo.
– Oportunidad
28 de abril de 2015 a las 14:34
-
Por cierto, extensiones hace que la lista de escondites parezca una rama; mientras que esto puede ayudar a los principiantes a acomodarse con
git
más fácil, los engaña más tarde. Árbol de origen presenta los alijos como objetos independientes, del mismo modo que muestra las ramas, las etiquetas y los mandos a distancia. Pruébalo (es gratis), tal vez te guste. También es cliente de Mercurial.– axiac
28 de abril de 2015 a las 14:51
-
“La lista de alijos se almacena como metadatos”, por lo que puedo ver en refs/logs/stash básicamente. Que es
git save
te refieres?– Sr_y_Sra_D
5 de junio de 2017 a las 10:43
-
@Mr_and_Mrs_D debería haber sido
git stash save
se me olvidó elstash
cuando escribí la respuesta. Lo arreglé ahora. Gracias por señalarlo.– axiac
5 de junio de 2017 a las 11:07
Probaste Sourcetree:
http://www.sourcetreeapp.com/
Podría resolver tu problema.
-
SourceTree es un buen
Git
Cliente GUI pero no puede ocultar archivos individuales. Tal vez esto se deba a que elstash
comando no fue diseñado para funcionar de esta manera?– axiac
15 de abril de 2015 a las 8:33
Desafortunadamente, su pregunta está fuera de tema. Stack Overflow no se trata de recomendaciones de software.
– jub0bs
14/04/2015 a las 19:31
@Jubobs, está bien, lo pensé como “Necesito una forma de resolver mi problema específico”, no como “qué cliente de git gui es el mejor”.
– Oportunidad
14/04/2015 a las 19:39
¿Tu sistema operativo? En Windows, GitExtensions podría hacer eso…
– Felipe
14/04/2015 a las 20:33
Tienes un problema pero buscas la solución en la dirección equivocada.
git stash
fue diseñado para otra cosa (se explica en el primer párrafo de su documentación). Puede hacer lo que quiera (y de una manera más flexible que ocultar) si crea una nueva rama y confirma los cambios en ella (en cualquier cantidad de combinación que desee) hasta que alcance el estado que desea. Luego solo revisa la rama anterior y listo.– axiac
15 de abril de 2015 a las 8:36
@axiac, creo que tienes razón. Estoy usando git proveniente de Perforce, así que estoy tratando de hacer que Stash encaje en el molde ‘dejar de lado’, pero creo que la bifurcación es la mejor manera de hacerlo. Relacionado con esto, las extensiones de git hacen una especie de rama a partir de mis escondites, por lo que es posible que pueda ocultarlos, pero tratarlos como una rama cuando tomo archivos individuales.
– Oportunidad
15 de abril de 2015 a las 13:09