Seria útil se você pudesse fornecer mais alguns detalhes. Deseja adotar o conteúdo de todos os arquivos da ramificação remota ou apenas de alguns arquivos (por exemplo, manter algumas versões / alterações locais)? Você tem algum histórico local que deseja manter? (Isso pode ser importante se houver outras ramificações ou repositórios que já incorporaram seu histórico local.) Se você deseja manter seu histórico local, o que planeja fazer com ele mais tarde? (Você pode deixar uma marca apontando para o histórico local e redefinir sua ramificação para o que o controle remoto possui, ou você pode “mesclar a deles”).
Pode valer a pena salientar que este irá separar HEAD - o entrevistador pode preferir permanecer no ramo comgit stash; git fetch origin; git reset --hard origin/master
Mark Longair
10
Eu acho que o comentário de Mark Longair é a resposta real a esta pergunta #
tem sido a resposta mais útil para mim +1
Andres
Como voltar ao estado antes do git stash? git stash listestá vazia.
Leo
Eu quero abraçá-lo
Ugur Kazdal
45
Entendo a pergunta da seguinte forma: você deseja substituir completamente o conteúdo de um arquivo (ou uma seleção) do montante. Você não deseja afetar o índice diretamente (portanto, você deve adicionar + confirmar, como de costume).
Meu entendimento é que, por exemplo, você salvou incorretamente um arquivo que atualizou apenas para fins de teste. Então, quando você executa o "status git", o arquivo aparece como "Modificado" e você diz algumas palavrões. Você só quer a versão antiga de volta e continua a funcionar normalmente.
Nesse cenário, você pode simplesmente executar o seguinte comando:
Para mim funcionou como este "git controles remotos de checkout / origem / master <my-file>"
saravanakumar
4
Use a opção -sou --strategycombinada com a -Xopção. Na sua pergunta específica, você deseja manter todos os arquivos remotos e substituir os arquivos locais com o mesmo nome.
Substituir conflitos pela versão remota
git merge -s recursive -Xtheirs upstream/master
usará a versão remota remota de todos os arquivos conflitantes.
Substituir conflitos pela versão local
git merge -s recursive -Xours upstream/master
usará a versão de repo local de todos os arquivos conflitantes.
git merge -s their
.Respostas:
Esta é a solução mais segura:
Agora você pode fazer o que quiser, sem medo de conflitos.
Por exemplo:
Se você deseja incluir as alterações remotas na ramificação principal, você pode:
Isso fará com que você ramifique "mestre" para apontar para "origem / mestre".
fonte
git stash; git fetch origin; git reset --hard origin/master
git stash
?git stash list
está vazia.Entendo a pergunta da seguinte forma: você deseja substituir completamente o conteúdo de um arquivo (ou uma seleção) do montante. Você não deseja afetar o índice diretamente (portanto, você deve adicionar + confirmar, como de costume).
Simplesmente faça
Se você quiser fazer isso para subárvores extensas e desejar afetar o índice diretamente, use
Você pode (opcionalmente) atualizar sua cópia de trabalho fazendo
fonte
Meu entendimento é que, por exemplo, você salvou incorretamente um arquivo que atualizou apenas para fins de teste. Então, quando você executa o "status git", o arquivo aparece como "Modificado" e você diz algumas palavrões. Você só quer a versão antiga de volta e continua a funcionar normalmente.
Nesse cenário, você pode simplesmente executar o seguinte comando:
fonte
Gostaria de fazer o checkout do arquivo remoto do "master" (o repositório remoto / de origem) assim:
Exemplo: componentes principais do git checkout / indexTest.html
fonte
Use a opção
-s
ou--strategy
combinada com a-X
opção. Na sua pergunta específica, você deseja manter todos os arquivos remotos e substituir os arquivos locais com o mesmo nome.Substituir conflitos pela versão remota
usará a versão remota remota de todos os arquivos conflitantes.
Substituir conflitos pela versão local
usará a versão de repo local de todos os arquivos conflitantes.
fonte