# Atualizar um arquivo de uma branch para outra # PERGUNTA eu tenho duas branchs fora a main: pedrograca@humbleV2:~/lead_tello/src/core$ git branch main teste_api_tello * teste_selector eu cuido da teste_selector e meu colega cuida da teste_api_tello. main teste_api_tello * teste_selector pedrograca@humbleV2:~/lead_tello/src/core$ git branch main teste_api_tello * teste_selector pedrograca@humbleV2:~/lead_tello/src/core$ tree . ├── CMakeLists.txt ├── LICENSE ├── core │ └── __init__.py ├── include │ └── core │ └── selector.hpp ├── msg │ └── ReferenceStamped.msg ├── package.xml ├── scripts │ └── api_tello.py └── src └── selector.cpp eu cuido da pasta src (que tem o projeto cpp) e ele cuida da pasta scripts (que tem o projeto py) só que ele precisou mexer no arquivo CMakeList.txt (que antes era uma copia igual da main) temos então 2 arquivos CMakeList.txt, o que ta na branch main e teste_selector e a que ta na branch teste_api_tello. Eu quero pegar as alterações desse arquivo do meu colega, mas não quero carregar alterações de outros arquivos, como eu faço? # Resposta Para pegar as alterações de um arquivo específico de uma branch para outra sem afetar os demais arquivos, você pode usar o comando `git checkout` com o caminho do arquivo específico e a branch de onde deseja pegar as mudanças. Aqui estão os passos detalhados: 1. **Certifique-se de que está na sua Branch Atual:** Primeiro, verifique se você está na branch em que deseja aplicar as alterações (neste caso, `teste_selector`): ```bash git checkout teste_selector ``` 2. **Buscar as Alterações da Branch Remota:** Atualize as informações da branch remota para garantir que você tenha as últimas mudanças: ```bash git fetch origin ``` 3. **Verificar o Status dos Arquivos:** Veja quais arquivos foram modificados na branch `teste_api_tello`: ```bash git diff teste_api_tello --name-only ``` Isso mostrará todos os arquivos que foram modificados na branch `teste_api_tello`. 4. **Pegar as Alterações do Arquivo Específico:** Use o comando `git checkout` para trazer o arquivo `CMakeLists.txt` da branch `teste_api_tello` para a sua branch atual (`teste_selector`): ```bash git checkout teste_api_tello -- CMakeLists.txt ``` 5. **Revisar as Mudanças:** Verifique as mudanças que foram trazidas para garantir que estão corretas: ```bash git diff CMakeLists.txt ``` 6. **Fazer Commit das Mudanças:** Faça commit das mudanças se estiver satisfeito com elas: ```bash git add CMakeLists.txt git commit -m "Atualizar CMakeLists.txt com alterações da branch teste_api_tello" ``` ### Resumo dos Comandos: ```bash # Certifique-se de estar na branch correta git checkout teste_selector # Buscar as alterações da branch remota git fetch origin # Verificar os arquivos modificados na branch teste_api_tello git diff teste_api_tello --name-only # Pegar o arquivo específico da outra branch git checkout teste_api_tello -- CMakeLists.txt # Revisar as mudanças git diff CMakeLists.txt # Fazer commit das mudanças git add CMakeLists.txt git commit -m "Atualizar CMakeLists.txt com alterações da branch teste_api_tello" ``` Seguindo esses passos, você conseguirá trazer apenas as mudanças específicas no arquivo `CMakeLists.txt` da branch `teste_api_tello` para a sua branch `teste_selector`, sem afetar os outros arquivos.