seguro "git pull" quando minha árvore de trabalho e / ou índice está suj

Digo que eu tenho um repositório git cuja árvore de trabalho e / ou índice estão "sujos" (ou seja, eu tenho modificações locais que ainda não foram confirmadas ou ocultadas) e estou tentado a fazer um "git pull" sem primeiro cometer ou ocultar . (Como alternativa, digamos que estou apresentando um novo membro da equipe ao git eele são tentados a executar "git pull" quandodele repo local é "sujo".) Gostaria de saber como é seguro executar um "git pull" nesse caso. Se não é seguro, qual é a pior coisa que pode acontecer? Importa se eu estiver obtendo de uma fonte confiável ou não confiável?

minha investigação até agora sugere uma gama confusa de idéias sobre o que eu supus que seria uma pergunta bastante diret

Para começar, a página de manual do git-stash faz parecer que o git pull é bastante seguro e abortará se você estiver em uma situação em que algo pode dar errado:

   Pulling into a dirty tree
       When you are in the middle of something, you learn that there are
       upstream changes that are possibly relevant to what you are doing.
       When your local changes do not conflict with the changes in the
       upstream, a simple git pull will let you move forward.

       However, there are cases in which your local changes do conflict
       with the upstream changes, and git pull refuses to overwrite your
       changes. In such a case, you can stash your changes away, perform a
       pull, and then unstash, like this...

Este também parece ser o que acontece nos meus testes simples até agor

Talvez também implique que "git pull" seja bastante seguro, oGit Extensions barra de ferramentas @ do Visual Studio possui um botão de destaque que não verifica se há sujeira antes de chamar "git pull". (Se eu estivesse projetando uma barra de ferramentas do Visual Studio, tentaria evitar que fosse particularmente fácil dar um tiro no pé.)

A página de manual git-pull não faz com que meu "git pull" pareça perigoso, embora sugira que não é uma prática recomendada:

   If any of the remote changes overlap with local uncommitted changes,
   the merge will be automatically cancelled and the work tree untouched.
   It is generally best to get any local changes in working order before
   pulling or stash them away with git-stash(1).

Mas você também pode encontrar conselhos de que colocar uma roupa suja é muito ruim,por exemplo:

Avoid git-pull!
git-pull should never get invoked if you have dirty files lying around or if your branch is ahead of master.
This will always lead to some dirty artifacts in the commit history

Existe uma resposta fácil para qual perspectiva é melhor ou isso é algo de caso a cas

Acompanhament: Usar "git pull --rebase" em vez de apenas "git pull" alteraria a resposta? Rebasing pode ter seuprópri armadilhas em alguns casos, mas até agora meu palpite é que ter uma árvore / índice de trabalho sujo não tornaria a rebase mais problemática do que seri

questionAnswers(12)

yourAnswerToTheQuestion