Git Syn c локально с пультом - PullRequest
1 голос
/ 17 апреля 2020

У меня есть локальная папка, точно такая же, как и удаленная, с некоторыми файлами, которые я включил позже (test2.txt в примере). Проблема в том, что я удалил из него папку. git. Поэтому я просто хочу снова добавить git.

Пример:

Локальный

folder1/
folder1/test.txt
folder1/test2.txt

Удаленный

folder1/
folder1/test.txt

Что я пробовал:

git init
git add ./
git commit -m "merge"
git pull origin master --allow-unrelated-histories

Я добавляю --allow-unrelated-histories, потому что он выдавал ошибку fatal: refusing to merge unrelated histories

На данный момент это все беспорядок ...

Ответы [ 3 ]

1 голос
/ 17 апреля 2020

Я бы предложил следующее:

  • клонировать пульт в новую папку

    git clone [url of repo here] new
    
  • в этом новом клоне, checkout правильная целевая ветвь

    cd new
    git checkout some/branch
    
  • теперь переместите папку .git/ из new/ в рабочий каталог

    mv new/.git  workdir
    

Вы должны быть в ожидаемом вами состоянии.

Убедитесь, что git status, git diff, git add file2.txt et c ... работают так, как вы хотите.

Вы можете удалить (теперь бесполезно) new/ каталог.

0 голосов
/ 17 апреля 2020

Мне удалось сделать это:

  • Клонировать репозиторий в новую папку

    cd /new/folder
    git clone [my repo]
    
  • Скопировать новую папку в старый (с папкой. git)

    cp -r /new/cloned/folder /my/old/folder
    
  • Передать новые файлы

    git commit -m "add text2 file"
    

Таким образом, я зафиксировал свои новые файлы, не теряя их, и смог "синхронизировать c" мою папку с моим удаленным хранилищем.

0 голосов
/ 17 апреля 2020

Это может быть сделано, вообще не затрагивая ваш рабочий каталог, хотя требует некоторых низкоуровневых манипуляций с git symbolic-ref и git read-tree.

# Create an empty .git/ directory.
git init

# Fetch the remote repository.
git remote add origin <upstream-url>
git fetch

# Get Git's index to match origin/master without touching the working tree.
#
# We want Git's staging area, known as the index, to match the remote repository.
# We can't use `git checkout` as it would complain about files being in the way.
# We can't use `git reset --hard` as it would overwrite local changes.
git symbolic-ref HEAD refs/remotes/origin/master
git read-tree HEAD

# Make this the master branch.
git checkout -t -b master

( Source )

Любые файлы, которые вы добавили, изменили или удалили, будут отображаться таким образом в git status. Это будет выглядеть так, будто Git был там все время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...