Como usar o comando gitignore no git

119

Estou trabalhando pela primeira vez no git. Empurrei meu branch no github e ele colocou toda a biblioteca e documentos no github. Agora o que posso fazer e como posso usar o comando gitignore para evitar o mesmo erro novamente.

user1559230
fonte
1
.gitignoreé um arquivo no diretório raiz do git. Adicione os padrões de nome para os arquivos que você deseja ignorar e os arquivos serão ignorados automaticamente.
LonelyWebCrawler
Estou no Ubuntu. Você pode dizer o caminho do diretório raiz do git
user1559230
2
É o diretório onde você usou git init. O .gitdiretório está localizado lá.
LonelyWebCrawler
2
Para aqueles que não sabem como usar o gitignore - vá para gitignore.io você pode digitar todas as ferramentas que está usando (symfony, CakePHP, ZendFramework, wordpress, grunt, sublime text, netbeans e assim por diante, você começa a broca ...) e ele irá gerar o arquivo git ignore para você. Se você não sabe como usar o gitignore, acho que a melhor maneira de aprender é olhando algum bom exemplo de caso de uso (como o gerado pelo gitignore.io. Se você quiser usá-lo da linha cmd (jeito geek ) consulte este tutorial: vimeo.com/70609819
DevWL

Respostas:

162

Portanto, com base no que você disse, esses arquivos são bibliotecas / documentação que você não deseja excluir, mas também não deseja enviar por push github. Vamos dizer que você tem o seu projeto em pasta your_projecte um diretório doc: your_project/doc.

  1. Remova-o do diretório do projeto (sem realmente excluí-lo): git rm --cached doc/*
  2. Se você não tiver um .gitignore, você pode fazer um interior direito da sua pasta de projeto: project/.gitignore.
  3. Coloque doc/*no .gitignore
  4. Prepare o arquivo para confirmação: git add project/.gitignore
  5. Commit: git commit -m "message".
  6. Empurre sua mudança para github.
u19964
fonte
você pode me dizer como escrever o arquivo .gitignore. ou seja, como escrever o caminho das pastas e arquivos que desejo ignorar dentro do arquivo .gitignore. Obrigado
user1559230
Obrigado pela sua resposta. Antes do commit, tive que executar git add -A
user1559230
4
Olá, o gitignore é apenas um arquivo de texto simples. Na verdade, é .gitignore (DOTgitignore). Apenas coloque o nome do arquivo / tipos de arquivo que você deseja que o git ignore, um por linha. Exemplo: sujee.net/tech/articles/gitignore
u19964 de
42

Se você não tiver um arquivo .gitignore, primeiro use:

touch .gitignore

em seguida, este comando para adicionar linhas em seu arquivo gitignore:

echo 'application/cache' >> .gitignore

Tenha cuidado com as novas linhas

Serdar Değirmenci
fonte
Não há necessidade de toucho arquivo primeiro. >>é sinônimo de >se o arquivo ainda não existir. echoacrescenta uma nova linha no final da saída. Você pode parar com isso -n. Se você precisar de vários ignora, ou fazer várias ecos, ou uso -e, como a seguir: echo -e "**/cache/\n**.pyc" >> .gitignore. Asterisco duplo corresponde a todos os arquivos que estão em pastas recursivamente também. Use /no final das pastas, por precaução.
mazunki
1
@Andrew tl; dr: Adicione cada arquivo ignorado com echo "file_to_be_ignored" >> .gitignore, sem necessidade de fazer mais nada. Termine os nomes das pastas com /as echo "**/modules/" >> .gitignore.
mazunki
Por que meu comentário foi excluído
Andrew
12

git ignore é uma convenção em git. Definir um arquivo com o nome de .gitignore irá ignorar os arquivos nesse diretório e os diretórios mais profundos que correspondem aos padrões que o arquivo contém. O uso mais comum é apenas ter um arquivo como este no nível superior. Mas você pode adicionar outros mais profundos em sua estrutura de diretório para ignorar ainda mais padrões ou parar de ignorá-los para esse diretório e, subsequentemente, para outros mais profundos.

Da mesma forma, você pode "cancelar ignorar" certos arquivos em uma estrutura mais profunda ou um subconjunto específico (ou seja, você ignora * .log, mas ainda deseja rastrear important.log) especificando padrões começando com !. por exemplo:

*.log !important.log

irá ignorar todos os arquivos de log, mas irá rastrear arquivos chamados important.log

Se você estiver rastreando arquivos que deseja ignorar, exclua-os, adicione o padrão ao seu arquivo .gitignore e adicione todas as alterações

# delete files that should be ignored, or untrack them with 
# git rm --cached <file list or pattern>

# stage all the changes git commit
git add -A 

de agora em diante, seu repositório não os terá mais rastreados.

Se você gostaria de limpar seu histórico, você pode

# if you want to correct the last 10 commits
git rebase -i --preserve-merges HEAD~10 

em seguida, marque cada commit com eou edit. Salve o plano. Agora o git irá repetir seu histórico, parando a cada commit que você marcou com e. Aqui você exclui os arquivos que não deseja git add -Ae , em seguida, git rebase --continueaté terminar. Sua história ficará limpa. Certifique-se de dizer aos colegas de trabalho, pois você terá que forçar o push e eles terão que realocar o que ainda não fizeram.

Adam Dymitruk
fonte
8

Há um arquivo no diretório raiz do git chamado .gitignore. É um arquivo, não um comando. Você só precisa inserir os nomes dos arquivos que deseja ignorar e eles serão automaticamente ignorados. Por exemplo, se você deseja ignorar todos os arquivos de salvamento automático do emacs, que terminam em ~, você pode adicionar esta linha:

*~

Se você deseja remover os arquivos indesejados de seu ramo, você pode usar o git add -A, que " remove arquivos que não estão mais na árvore de trabalho ".

Nota: O que chamei de "diretório raiz do git" é simplesmente o diretório no qual você usou git initpela primeira vez. É também onde você pode encontrar o .gitdiretório.

LonelyWebCrawler
fonte
o que acontecerá com os arquivos já
enviados
4

Se você não tiver um arquivo .gitignore. Você pode criar um novo por

touch .gitignore

E você pode excluir uma pasta digitando o comando abaixo no arquivo .gitignore

/folderName

coloque este arquivo em seu repositório git para que quando uma nova pessoa clonar seu projeto, ela não tenha que adicionar o mesmo novamente

karthik vishnu kumar
fonte
2

Existem várias maneiras de usar gitignore git

  • especificando pelo nome de arquivo específico. por exemplo, para ignorar um arquivo
    chamado readme.txt, basta escrever readme.txt no arquivo .gitignore.
  • você também pode escrever o nome da extensão do arquivo. Por exemplo, para
    ignorar todos os arquivos .txt, escreva * .txt.
  • você também pode ignorar uma pasta inteira. por exemplo, você deseja ignorar a
    pasta chamada test. Depois é só escrever test / no arquivo.

basta criar um arquivo .gitignore e escrever o que quiser para ignorar um arquivo gitignore de amostra:

# NPM packages folder.
node_modules

# Build files
dist/

# lock files
yarn.lock
package-lock.json

# Logs
logs
*.log
npm-debug.log*

# node-waf configuration
.lock-wscript

# Optional npm cache directory
.npm

# Optional REPL history
.node_repl_history

# Jest Coverage
coverage

.history/

Você pode encontrar mais na documentação do git gitignore

Afaq Ahmed Khan
fonte
1

no meu mac eu encontrei este arquivo .gitignore_global .. ele estava no meu diretório home escondido, então faça um ls -altrpara vê-lo.

Eu adicionei arquivos eclipse que queria que o git ignorasse. o conteúdo é parecido com este:

 *~
.DS_Store
.project
.settings
.classpath
.metadata
j2emanue
fonte
quando coloquei o arquivo .gitignore na pasta do meu projeto, ele bagunçou meu projeto Eclipse localmente. você sabe por que isso poderia acontecer e como evitá-lo? por enquanto, estou apenas ficando longe de .gitignore.
JesseBoyd de
Eu não uso mais o eclipse. Inteilji agora
j2emanue