Qual é o significado dos traços duplos antes do nome do arquivo neste comando git?
git checkout --ours -- path/to/file.txt
git checkout --theirs -- path/to/file.txt
Eles são obrigatórios? É equivalente a
git checkout --ours path/to/file.txt
git checkout --theirs path/to/file.txt
git
git-checkout
mottalrd
fonte
fonte
Respostas:
Suponha que eu tenha um arquivo nomeado
path/to/file.txt
no meu repositório Git e deseje reverter as alterações nele.Agora, suponha que o arquivo seja nomeado
master
...Ops! Isso mudou os galhos. O
--
separa a árvore que você deseja retirar dos arquivos que deseja retirar.Também nos ajuda se algum freako adicionou um arquivo chamado
-f
ao nosso repositório:Isso está documentado no git-checkout: Desambiguação de argumento .
fonte
--
pode ser usado para separar opções de outros argumentos, portanto você o verá em comandos comocp
emv
(que não fazem parte do Bash).checkout
documentação do comando?checkout
comando, mas em nenhum lugar a documentação explica o que faz ou por que é usado ... e foi isso que finalmente me trouxe aqui.--
. Como alguém que não é do fundo do Linux, não é óbvio o que isso faz. Para mim, parecia ser uma sintaxe específica do git, sem descrição de seu objetivo funcional. Eu acho que seria melhor ter uma descrição curta como as outras opções, ou pelo menos um link para uma página de manual do linux .O traço duplo "-" significa "sinalizadores de fim de linha de comando", ou seja, diz ao comando anterior para não tentar analisar o que vem após as opções de linha de comando.
fonte
git
significa mais do que isso, pois também significa que o argumento após o--
não pode ser um nome de filial e, por implicação, o argumento anterior--
não pode ser um caminho de arquivo.Observe que você não precisaria, desde o Git 2.5 (Q2 2015) a '
--
' se seu argumento incluir curinga (*
)Uma heurística para ajudar a "
git <cmd> <revs> <pathspec>
" convenção da linha de comando a pegar caminhos digitados incorretamente é garantir que todos os parâmetros que não sejam de rotação na parte posterior da linha de comando sejam nomes dos arquivos na árvore de trabalho, "git grep $str -- \*.c
" mas isso sempre deve ser desambiguado com "--
", porque ninguém sensato criará um arquivo cujo nome literalmente seja asterisco-ponto-ver.O Git 2.5 perde a heurística para declarar que, com uma string curinga, o usuário provavelmente quis nos fornecer um pathspec .
Veja commit 28fcc0b (02 de maio de 2015) por Duy Nguyen (
nguyenlocduy
) .(Mesclado por Junio C Hamano -
gitster
- na confirmação 949d167 , 19 de maio de 2015)Com o Git 2.26 (primeiro trimestre de 2020), a lógica de desambiguação para diferenciar revisões e pathspec foi alterada para que os caracteres especiais da glob escapados por barra invertida não sejam contados na regra "curingas são pathspec".
Veja commit 39e21c6 (25 de janeiro de 2020) por Jeff King (
peff
) .(Mesclado por Junio C Hamano -
gitster
- na confirmação 341f8a6 , 12 de fevereiro de 2020)( DWIM: faça o que eu quero dizer )
fonte