Confirmar histórico no repositório remoto


206

Estou tentando acessar o histórico de consolidação de uma filial em um repositório remoto. Dei uma olhada no documento, mas não consegui encontrar informações substanciais sobre como acessar o histórico de consolidação de um repositório remoto usando meu cliente git local.

Respostas:


252
git log remotename/branchname

Exibe o log de uma ramificação remota específica nesse repositório, mas apenas os logs que você "buscou" do repositório para sua "cópia" pessoal do repositório remoto.

Lembre-se de que seu clone do repositório atualizará seu estado de qualquer ramificação remota apenas fazendo isso git fetch. Você não pode se conectar diretamente ao servidor para verificar o log, o que você faz é baixar o estado do servidor git fetche, em seguida, ver localmente o log das ramificações remotas.

Talvez outro comando útil possa ser:

git log HEAD..remote/branch

que mostrará os commits que estão na ramificação remota, mas não na ramificação atual ( HEAD).


8
"Você não pode se conectar diretamente ao servidor para verificar o log lá" - esse era o problema que eu estava tendo
Brian J

1
Eu só estou recebendo alterações locais puxadas ... observe as remotas, mesmo fazendo buscas antes.
Loenix

6
Ao fazer um, git fetchvocê precisa usar --allpara buscar nos controles remotos.
Ocodo 25/07

25
Isso é muito ruim, então eu tenho que clonar 2 GB de objetos apenas para examinar os logs de confirmação?
TWIStErRob 11/04

2
Olá @TWiStErRob, você pode reduzir a dor gerenciando a quantidade de dados buscados com um clone superficial (consulte --thpth em git-scm.com/docs/git-clone ) e, em seguida, gerencie buscas com (consulte "shallow" no git-scm .com / docs / git-fetch ).
Qneill 12/05/19

66

NB "origem" abaixo usado para representar a montante de um repositório clonado, substitua "origem" por um nome descritivo para o repositório remoto. "referência remota" pode usar o mesmo formato usado no comando clone.

git remote add origin <remote reference>
git fetch
git log origin/master

2
@ user1795998 A URL Git do repositório remoto, por exemplo,git://git.somedomain.tld/some/repo
gertvdijk

1
Você não precisa especificar <refspec>ao buscar (ou usar fetch --all) se não está rastreando nenhuma ramificação no controle remoto?
gertvdijk

1
O que você quer dizer com "fornecedor de projeto / diag"? Essa é uma pasta dentro do repositório? Outro ramo?
LopSae

1
Um repositório pode ter várias ramificações, mas "projeto" não é um termo relacionado ao git, a partir daí a confusão sobre o que um "projeto" significa neste caso. Ainda assim, o que isso teria a ver com a questão?
LopSae

1
Não acredito que seja possível fazer isso no GIT. Você deve clonar esse repositório remoto antes de poder emitir um log git nele.
user959690

12

Você pode visualizar apenas o log em um repositório local, no entanto, isso pode incluir as ramificações buscadas de todos os controles remotos que você configurou.

Então, se você clonar um repositório ...

git clone git@gitserver:folder/repo.git

O padrão será origin/master.

Você pode adicionar um controle remoto a esse repositório, além de originadicionar production. De dentro da pasta clone local:

git remote add production git@production-server:folder/repo.git

Se quisermos ver o log production, precisaremos fazer:

git fetch --all 

É buscado em TODOS os controles remotos (a busca padrão sem --allseria buscada apenas a partir de origin)

Após buscar, podemos ver o log no productioncontrole remoto, você também precisará especificar a ramificação.

git log production/master

Todas as opções funcionarão como no logon nas filiais locais.


12

Uma maneira rápida de fazer isso é clonar usando a --barepalavra - chave e depois verificar o log:

git clone --bare git@giturl tmpdir
cd tmpdir
git log branch

11

Não acredito que isso seja possível. Acredito que você precise clonar esse repositório remoto localmente e executá git fetch-lo antes de poder emitir um git logcontra.


1
imagine que você já clone o repositório para local e faça algumas alterações. . então você quer verificar se alguém já comprometida com o repo remoto
Chhorn Elit

2
Se você alterar esta resposta para "Não é possível", esta é a melhor resposta. Não há como acessar o histórico de consolidação de um repositório remoto usando um cliente git remoto.
qneill


2

Não tenho certeza quando a filtragem foi adicionada, mas é uma maneira de excluir os blobs de objeto se você deseja apenas buscar o histórico / ref-logs:

git clone --filter=blob:none --no-checkout --single-branch --branch master git://some.repo.git .
git log

Isto é perfeito . Dadas as outras respostas, seria incrível se isso pudesse se destacar ao lado da resposta fornecida.
Eric Cousineau

0

Você pode facilmente obter o log do servidor remoto. Aqui está como:

(1) Se você estiver usando o git via ssh - faça o login no servidor remoto usando seu login e senha do git - e selecione a pasta remota onde seu repositório existe - e execute o comando "git log" dentro do seu repositório no servidor remoto.

(2) Se você estiver usando o git através do protocolo de login padrão do Unix, basta telnetar para o servidor remoto e fazer um log do git lá.

Espero que isto ajude.


13
Reformular, "você não pode obter um registro de um servidor remoto, você tem que login e obter o log usando um cliente git local"
qneill

Basta apagar esta resposta, ele não responder à pergunta e não é como a maioria dos usuários git não tem acesso shell servidor
nhed

0

Aqui está uma função bash que facilita a visualização dos logs em um controle remoto. São necessários dois argumentos opcionais. O primeiro é o ramo , o padrão é dominar . O segundo é o controle remoto , o padrão é o teste .

git_log_remote() {
  branch=${1:-master}
  remote=${2:-staging}

  git checkout $remote/$branch
  git fetch
  git log
  git checkout -
}

exemplos:

 $ git_log_remote
 $ git_log_remote development origin
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.