Sincronizar git local com github

Eu mudei do windows para o linux (ubuntu) agora e os meus projetos que estão no github não estão mais sincronizados com o git local, creio que devido a ser uma nova instalação. Todos os meus projetos estão como not staged qual seria o procedimento correto para refazer a sincronização?

2 Curtidas

Como que você fez o clone dos repositórios?
Eu recomendo você criar/cadastrar uma chave SSH, e depois clonar os repositórios usando o comando git clone git@github.com/... (use o protocolo SSH que vai facilitar muito a sua vida).

2 Curtidas

Olá @rafaelcmd,

Presumindo que foram feitas modificações na pasta do seu projeto que causaram este comportamento a solução mais abrangente e eficaz, seria a seguinte:

 rm -R .git
 git init

Depois disto você deverá poder trabalhar no seu projeto com git novamente.


Se são muitos projetos você pode automatizar esta ação com um simples script em bash:

git_fix.sh
#!/usr/bin/env bash
# Any copyright is dedicated to the Public Domain.
# https://creativecommons.org/publicdomain/zero/1.0/

# Put here all repository names that you want avoid.
AVOID=(
    "avoid-this-repo"
)

# Put here all commands that you want to run after the cleanup
CMDS=(
    "/usr/bin/env git init"
    "/usr/bin/env git status"
)

# Start loop with all directories listed by the 'ls' command
for DIR in $(ls -DU1); do

    n=0 # Flag used to avoid a repository

    # Check repositories avoid list
    for a in "${AVOID[@]}"; do
        case "$DIR" in
            *"$a"* )
                n=1 # Mark repository with avoid flag 1
            ;;
        esac
    done

    t=".git" # Git target folder
    b=".git_old" # Git backup folder

    # Check if target folder exist and if avoid flag is equal to 0
    if [[ -d "${DIR}/${t}" && $n -eq 0 ]]; then
        echo  -e "\n - Found project folder: $DIR\n"

        cd $DIR # Change to the project directory

        mv -v -f $t $b # Remove git target and create a copy of it

        # Run all after cleanup commands
        for CMD in "${CMDS[@]}"; do
            echo -e "\n"
            $CMD
            echo -e "\n"
            read -n 1 -s -r -p " - Press any key to continue"
        done

        cd .. # Change to the projects root folder
    fi
done

echo -e "\nEnd.\n"

exit 0

Informações sobre o script:

  1. Para utiliza-lo basta colocar o script na pasta raiz aonde você tem todos os seus repositórios.
  2. O script irá buscar por pastas que possuem a sub-pasta .git e mover ela para .git_old, após isso, você pode adicionar comandos para ser executado a cada alteração eu coloquei git init e git status apenas para exemplo.
  3. O script está com bastante comentário para facilitar o entendimento.

Espero ter lhe ajudado de alguma forma, até mais!.

1 Curtida