Eu amo o git add --interactive . Agora faz parte do meu fluxo de trabalho diário.
O problema parece que não funciona com arquivos não rastreados. O que eu quero fazer é rastrear um novo arquivo, mas apenas adicionar parte dele, ou seja, algumas partes desse novo arquivo ainda não estão prontas para serem preparadas.
Por exemplo, com o git add -i, eu posso escolher a opção de patch e até editar blocos individuais, a fim de preparar partes do novo código, deixando os comentários do código de depuração em estágios. Adoro trabalhar dessa maneira, porque torna óbvio em que locais do mega patch em que estou trabalhando ainda precisam de trabalho.
Infelizmente, parece que não consigo fazer o mesmo com um arquivo não rastreado. Ou eu preparo o arquivo inteiro, ou nada. A solução alternativa que estou usando é a preparação ou até a confirmação de um novo arquivo quando ele estiver vazio e, em seguida, a realização de alterações individuais da maneira usual. Mas essa solução parece um truque sujo e, quando esqueço, ou mudo de idéia, cria mais problemas do que deveria.
Portanto, a pergunta é: como preparar apenas parte de um novo arquivo, para que esse novo arquivo seja rastreado, mas deixando o todo ou parte do seu conteúdo sem palco?
</shame>
-N
Descoberta maravilhosa , obrigado! Embora eu prefira combiná-lo-p
nesse caso.gid add -N the_file
&git add -p
. Deve-se acrescentar que-N
também funciona com-A
A maneira mais fácil de fazer isso (e imho teste interativo em geral) é
git gui
. Ele vem com o git e deve funcionar em quase todas as plataformas suportadas pelo git.Basta executar
git gui
e uma interface gráfica do usuário será aberta, permitindo blocos de teste e de teste e até linhas únicas de arquivos rastreados e não rastreados.fonte
git gui
. No Debian, por exemplo, ele está em um pacote separado chamado 'git-gui'.git gui
nunca funcionou. Na verdade, desativa essas opções de menu .git gui
para um novo arquivo, é necessário executargit add -N new_file
primeiro - consulte a resposta de Richard Hansen.Demonstração simples:
e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
. Eu não recomendo fazer isso_NUL:
vez de/dev/null
. Caso contrário, use algo comoecho -n '' | git hash-object --stdin -w
Agora, o índice conterá
newfile
como o blob vazio e o blob vazio foi inserido no banco de dados do objeto se ainda não existia:Isso deve ser exatamente o que você deseja. Também posso recomendar o plugin fugitivo vim para gerenciamento de índice muito inteligente (consulte Better git add -p? )
fonte
Edit: isso não parece estar funcionando agora. Tenho certeza de que era antes (no git 1.7.1). Caso isso não funcione, sugiro a preparação,
/dev/null
como sugere acima:Se você estiver no Windows (sem
/dev/null
), poderá substituí-lo pelo caminho para um arquivo vazio.Resposta original
Você quer
Isso adiciona arquivos não rastreados para mim. Na página do manual:
fonte
git add -p newfile
não funciona (efeito nu) egit add --interactive
'[a] dd untracked' tem o efeito quegit add newfile
tem; Editar também verificado com git 1.7.5.3; Não há dadosSó para registrar uma outra possibilidade: eu uso
E então você pode montar pedaços ou editá-los no lugar.
fonte
add -N
comadd -i
. Acabei de adicionar isso emadd -p
vez deadd -i
funcionar também.