Como faço para ignorar todos os arquivos em uma pasta com um repositório Git no Sourcetree?

86

Eu tenho um repositório Bitbucket Git gerenciado com Sourcetree.

Tenho duas pastas que desejo confirmar, mas preciso ignorar todos os arquivos dessas pastas, porque elas contêm apenas arquivos temporários.

Como eu posso fazer isso?

rubdottocom
fonte

Respostas:

54

Adicione a .gitignore:

*
!.gitignore
Gergo Erdosi
fonte
13
Isso deve ser adicionado dentro de cada pasta que você deseja rastrear. A própria existência deste arquivo fará com que o git rastreie a pasta (rastreando este arquivo). Os *meios ignoram todos os arquivos e os !.gitignoremeios não ignoram o próprio arquivo
Billy Moon
2
Como Billy Moon explicou, obrigado. Assim, você pode criar arquivos .gitignore em diretórios. Este arquivo diz ao Git o que ignorar ou não.
Gergo Erdosi
21
Como você faz isso no SourceTree?
1,21 gigawatts de
1
Você não precisa do SourceTree para isso, .gitginoreé um arquivo normal, basta criá-lo no diretório cujo conteúdo você deseja ignorar.
Gergo Erdosi
1
Conforme mencionado por @ AD7six abaixo, não adicione! .Gitignore ao arquivo, pois é desnecessário.
Xcalibur
155

Para usuários do Sourcetree: Se você deseja ignorar uma pasta específica, basta selecionar um arquivo desta pasta, clicar com o botão direito sobre ele e fazer "Ignorar ...". Você terá um menu pop-up onde poderá ignorar "Ignorar tudo abaixo: <SUA PASTA INDESEJADA>"

Primeiro menu

Segundo menu

Se a opção "Ignorar" estiver acinzentada, você deverá selecionar a opção "Parar rastreamento". Depois disso, o arquivo será adicionado aos arquivos em teste com um sinal de menos no ícone de fundo vermelho e o ícone do arquivo na lista de arquivos não testados mudará para um sinal de pergunta em um fundo violeta. Agora na lista de arquivos não testados , a opção "Ignorar" está habilitada novamente. Faça como descrito acima.

Kalzem
fonte
14
Se a pasta já foi confirmada, exclua-a primeiro, envie as alterações e siga os passos acima.
RMorrisey
16
A opção "Ignorar" está desativada. Alguém sabe por quê?
Andrei Karcheuski,
6
Ignorar também está esmaecido para mim.
Micah Zoltu,
ignora adiciona a git ignora? se não, por que não?
Joe Lloyd
1
@JoeLloyd sim, adiciona ao git ignore. Você pode até mesmo enviar o arquivo git ignore criado / editado como qualquer outro arquivo.
Kalzem
25

Clique com o botão direito em um arquivo → IgnorarIgnorar tudo abaixo .

Se a opção Ignorar estiver desabilitada:

  1. Prepare um arquivo primeiro
  2. Clique com o botão direito → Parar o rastreamento
  3. Esse arquivo aparecerá no painel abaixo com um ponto de interrogação → Clique com o botão direito nele → Ignorar

Insira a descrição da imagem aqui

Andrei Karcheuski
fonte
7

Pelo que eu sei, o Git não rastreia pastas, apenas arquivos - portanto, pastas vazias (ou pastas onde todos os arquivos são ignorados) não podem ser confirmadas. Se você, por exemplo, precisar que a pasta esteja presente devido a alguma etapa em seu processo de construção, talvez você possa deixar sua ferramenta de construção criá-la? Ou você pode colocar um arquivo vazio e não ignorado na pasta e confirmá-lo.

Aasmund Eldhuset
fonte
1
Quer dizer que, se eu quiser rastrear a pasta, tenho que adicionar um arquivo "fictício" e ignorar o resto? : - /
rubdottocom
2
@rubdottocom: Eu acredito que sim; as pastas existem no git apenas por causa dos arquivos que estão nelas. Por que você precisa ter uma versão de pasta vazia controlada?
Aasmund Eldhuset
2
Existem muitos motivos para rastrear pastas vazias. Você pode querer que um checkout tenha a pasta pronta para as pessoas usarem, sem ter que criá-los individualmente. Seu código pode depender da existência de uma determinada pasta, por exemplo, uma pasta que está esperando uploads, e se a pasta não existir, ela não consegue enviar os arquivos para lá, etc ...
Billy Moon
Pelo motivo explicado por @AasmundEldhuset, a resposta dada por Gergo tem a solução certa.
Billy Moon
@BillyMoon: Concordo que pode haver motivos; Gostaria de saber quais eram as suas necessidades particulares, para que pudéssemos sugerir a solução mais adequada. :-) O truque de Gergo era bacana, embora resulte em adicionar um (mais ou menos) arquivo fictício à pasta, como sugeri. Sua solução foi mais git-ish, então +1 para ele.
Aasmund Eldhuset
5

Depois de bater minha cabeça nisso por pelo menos uma hora, ofereço esta resposta para tentar expandir os comentários que alguns outros fizeram. Para ignorar uma pasta / diretório, faça o seguinte: se você não tiver um arquivo .gitignore na raiz do seu projeto (esse nome exatamente ".gitignore"), crie um arquivo de texto fictício na pasta que deseja excluir. Dentro da árvore de origem, clique com o botão direito e selecione Ignorar. Você verá um pop-up parecido com este.

insira a descrição da imagem aqui

Selecione "Tudo embaixo" e selecione a pasta que deseja ignorar na lista suspensa. Isso criará um arquivo .gitignore em seu diretório raiz e colocará a especificação da pasta nele.

Se você já tem uma pasta .gitignore em sua pasta raiz, você pode seguir a mesma abordagem acima ou pode apenas editar o arquivo .gitignore e adicionar a pasta que deseja excluir. É apenas um arquivo de texto. Observe que ele usa barras nos nomes de caminho em vez de barras invertidas, como nós, usuários do Windows, estamos acostumados. Tentei criar um arquivo de texto .gitignore manualmente no Windows Explorer, mas ele não me permitiu criar um arquivo sem um nome (ou seja, apenas com a extensão).

Observe que adicionar o .gitignore e a especificação do arquivo não afetará os arquivos que já estão sendo rastreados. Se você já estiver rastreando esses itens, terá que parar de rastreá-los. (Clique com o botão direito do mouse na pasta ou arquivo e selecione Parar Rastreamento.) Você verá a mudança de um ícone verde / limpo ou âmbar / alterado para um ícone vermelho / removido. Em seu próximo commit, os arquivos serão removidos do repositório e depois disso aparecerão com um ícone azul / ignorado. Outro colaborador perguntou por que Ignorar foi desativado para arquivos específicos e acredito que foi porque ele estava tentando ignorar um arquivo que já estava sendo rastreado. Você só pode ignorar um arquivo que tenha um ícone de ponto de interrogação azul.

Karl Hoaglund
fonte
Para criar um arquivo .gitignore no Widnows, use o comando Git bash 'touch .gitignore'
Mikee,
4

Como mencionado por outros: git não rastreia pastas, apenas arquivos.

Você pode garantir que exista uma pasta com estes comandos (ou lógica equivalente):

echo "*" > keepthisfolder/.gitignore
git add --force keepthisfolder/.gitignore
git commit -m "adding git ignore file to keepthisfolder"

A existência do arquivo significa que qualquer pessoa que fizer check-out do repositório terá a pasta.

O conteúdo do arquivo gitignore significará que tudo nele será ignorado

Você não precisa ignorar o próprio arquivo .gitignore . É uma regra que não teria nenhum propósito uma vez cometida.

OU

se preferir manter todas as suas definições de ignorar no mesmo lugar, você pode criar .gitignore na raiz do seu projeto com conteúdos como este:

*.tmp # example, ignore all .tmp files in any folder
path/to/keepthisfolder
path/to/keepthatfolder

e para garantir que as pastas existam

touch path/to/keepthisfolder/anything
git add --force path/to/keepthisfolder/anything
git commit -m "ensure keepthisfolder exists when checked out"

"qualquer coisa" pode ser literalmente qualquer coisa. Os nomes comuns usados ​​são .gitignore, .gitkeep, vazio.

AD7six
fonte
3

Se a opção Ignorar estiver esmaecida, você deve parar de rastrear o arquivo antes de ignorá-lo. Você pode simplesmente clicar com o botão direito no arquivo e clicar em "Parar rastreamento".

Um ícone azul deve aparecer próximo a ele. Clique com o botão direito novamente e clique em ignorar.

LeRoy
fonte
2

Ignora a pasta completa na árvore de origem.

   Just Open Repository >Repository setting > Edit git ignore File and 
   you can rite some thing like this :

 *.pdb 
*.bak 
*.dll
*.lib 
.gitignore
packages/ 
*/bin/
*/obj/ 

Para as pastas bin e obj, basta escrever: * / bin / * / obj /

Rajesh Kumar
fonte
0
  • Ignore todos os arquivos na pasta com Git no Sourcetree:

Ignore todos os arquivos na pasta com Git no Sourcetree

Yatko
fonte
-2

No Sourcetree: Simplesmente ignore um arquivo na pasta especificada. O Sourcetree perguntará se você deseja ignorar todos os arquivos dessa pasta. Está perfeito!

AVEbrahimi
fonte
14
-1 Uma resposta sem sentido. Já que você não explica como fazer o ignore (na árvore de origem)!
Engenheiro