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.
.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.
Remova-o do diretório do projeto (sem realmente excluí-lo):
git rm --cached doc/*
Se você não tiver um .gitignore, você pode fazer um interior direito da sua pasta de projeto: project/.gitignore.
Coloque doc/*no .gitignore
Prepare o arquivo para confirmação: git add project/.gitignore
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
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.
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:
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.
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:
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.
.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.git init
. O.git
diretório está localizado lá.Respostas:
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 pastayour_project
e um diretório doc:your_project/doc
.git rm --cached doc/*
.gitignore
, você pode fazer um interior direito da sua pasta de projeto:project/.gitignore
.doc/*
no .gitignoregit add project/.gitignore
git commit -m "message"
.github
.fonte
Se você não tiver um arquivo .gitignore, primeiro use:
em seguida, este comando para adicionar linhas em seu arquivo gitignore:
fonte
touch
o arquivo primeiro.>>
é sinônimo de>
se o arquivo ainda não existir.echo
acrescenta 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.echo "file_to_be_ignored" >> .gitignore
, sem necessidade de fazer mais nada. Termine os nomes das pastas com/
asecho "**/modules/" >> .gitignore
.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: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
de agora em diante, seu repositório não os terá mais rastreados.
Se você gostaria de limpar seu histórico, você pode
em seguida, marque cada commit com
e
ouedit
. 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 desejagit add -A
e , em seguida,git rebase --continue
até 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.fonte
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 init
pela primeira vez. É também onde você pode encontrar o.git
diretório.fonte
Se você não tiver um arquivo .gitignore. Você pode criar um novo por
E você pode excluir uma pasta digitando o comando abaixo no arquivo .gitignore
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
fonte
Existem várias maneiras de usar gitignore git
chamado readme.txt, basta escrever readme.txt no arquivo .gitignore.
ignorar todos os arquivos .txt, escreva * .txt.
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:
Você pode encontrar mais na documentação do git gitignore
fonte
no meu mac eu encontrei este arquivo
.gitignore_global
.. ele estava no meu diretório home escondido, então faça umls -altr
para vê-lo.Eu adicionei arquivos eclipse que queria que o git ignorasse. o conteúdo é parecido com este:
fonte