Есть ли способ клонировать существующий удаленный git-репо в локальный каталог, не перезаписывая текущие локальные файлы? [Дубликат]

Вам действительно нужно сделать это из папки src. Там вы вводите следующую командную строку:

[name of the package].[Class Name] [arguments]

Допустим, ваш класс называется CommandLine.class, и код выглядит следующим образом:

package com.tutorialspoint.java;

    /**
     * Created by mda21185 on 15-6-2016.
     */

    public class CommandLine {
        public static void main(String args[]){
            for(int i=0; i<args.length; i++){
                System.out.println("args[" + i + "]: " + args[i]);
            }
        }
    }

Затем вы должны cd в папку src и команда, которую вам нужно запустить, будет выглядеть так:

java com.tutorialspoint.java.CommandLine this is a command line 200 -100

И вывод в командной строке будет:

args[0]: this
args[1]: is
args[2]: a
args[3]: command
args[4]: line
args[5]: 200
args[6]: -100
466
задан svick 3 July 2013 в 14:06
поделиться

13 ответов

В следующих командах оболочки existing-dir - это каталог, содержимое которого соответствует отслеживаемым файлам в репозитории repo-to-clone git.

# Clone just the repository's .git folder (excluding files as they are already in
# `existing-dir`) into an empty temporary directory
git clone --no-checkout repo-to-clone existing-dir/existing-dir.tmp # might want --no-hardlinks for cloning local repo

# Move the .git folder to the directory with the files.
# This makes `existing-dir` a git repo.
mv existing-dir/existing-dir.tmp/.git existing-dir/

# Delete the temporary directory
rmdir existing-dir/existing-dir.tmp
cd existing-dir

# git thinks all files are deleted, this reverts the state of the repo to HEAD.
# WARNING: any local changes to the files will be lost.
git reset --hard HEAD
137
ответ дан bob esponja 27 August 2018 в 23:34
поделиться

Мне понравился ответ Дейла, и я также добавил

git clone --depth 2 --no-checkout repo-to-clone existing-dir/existing-dir.tmp
git branch dev_new214
git checkout dev_new214
git add .
git commit
git checkout dev
git merge dev_new214

Неглубокая глубина избегала множества дополнительных ранних попыток. Новый филиал дал нам хорошую визуальную историю о том, что на этом сервере был добавлен новый код. Это, по-моему, идеальные ветви. Огромное спасибо всем людям, которые разместили здесь.

1
ответ дан Dmitri R117 27 August 2018 в 23:34
поделиться
git init 

git remote add origin PATH/TO/REPO 

git fetch 

git checkout -t origin/master -f

Изменено из ответа @ cmcginty - без -f это не сработало для меня

12
ответ дан JohnFF 27 August 2018 в 23:34
поделиться

Это сработало для меня:

git init
git remote add origin PATH/TO/REPO
git fetch
git reset origin/master  # this is required if files in the non-empty directory are in the repo
git checkout -t origin/master

ПРИМЕЧАНИЕ: -t установит для вас ветвь вверх по течению, если это то, что вы хотите, и это обычно есть.

594
ответ дан Jonathan Leffler 27 August 2018 в 23:34
поделиться

Другой простой рецепт, похоже, хорошо работает для меня:

git clone --bare $URL .git
git config core.bare false

Моим основным вариантом использования для проверки в каталоге с существующими файлами является управление моими файлами Unix с Git. В новой учетной записи в домашнем каталоге уже есть некоторые файлы, возможно, даже те, которые я хочу получить от Git.

7
ответ дан Ken Williams 27 August 2018 в 23:34
поделиться

Я использовал это несколько минут назад, требует наименее потенциально разрушительных команд:

cd existing-dir
git clone --bare repo-to-clone .git
git config --unset core.bare
git reset

И voilá!

3
ответ дан KuttKatrea 27 August 2018 в 23:34
поделиться

Я искал что-то подобное, и вот что я придумал:

Моя ситуация - это ситуация, когда у меня есть активное веб-дерево, и я пытался создать для него удаленный репозиторий, не перемещая файлов в текущем веб-дереве. Вот что я сделал:

  1. Перейти к веб-дереву и запустить git init
  2. Перейти к предполагаемому местоположению репозитория и запустить: git clone --bare /path/to/web/repo
  3. Отредактируйте конфигурационный файл в удаленном репо и удалите раздел [remote "origin"].
  4. Добавьте раздел [remote "origin"] в .git / config в веб-дереве, указав на новое дистанционное репо.
3
ответ дан Lendrick 27 August 2018 в 23:34
поделиться

Вот что я в итоге сделал, когда у меня была такая же проблема (по крайней мере, я думаю, что это та же проблема). Я пошел в каталог A и запустил git init.

Так как я не хотел, чтобы файлы в каталоге A сопровождались git, я редактировал .gitignore и добавил к нему существующие файлы. После этого я побежал git remote add origin '<url>' && git pull origin master et voíla, B «клонировал» в A без единого икоты.

24
ответ дан Maciej Łebkowski 27 August 2018 в 23:34
поделиться

Это сработало для меня:

cd existing_folder
git init
git remote add origin path_to_your_repo.git
git add .
git commit
git push -u origin master
9
ответ дан Mike6679 27 August 2018 в 23:34
поделиться

Небольшая модификация одного из ответов, которые работали для меня:

git init
git remote add origin PATH/TO/REPO
git pull origin master

, чтобы сразу начать работать с ведущей веткой.

79
ответ дан PaulMest 27 August 2018 в 23:34
поделиться

Вот что я делаю:

git clone repo /tmp/folder
cp -rf /tmp/folder/.git /dest/folder/
cd /dest/folder
git checkout -f master
0
ответ дан Philip Kirkbride 27 August 2018 в 23:34
поделиться

Возможно, я неправильно понял ваш вопрос, но не проще ли копировать / перемещать файлы из A в git repo B и добавлять необходимые с помощью git add ?

UPDATE: из git doc:

Клонирование в существующий каталог разрешено только в том случае, если каталог пуст.

ИСТОЧНИК: http://git-scm.com/docs/git-clone

3
ответ дан Roberto Aloi 27 August 2018 в 23:34
поделиться

это работа для меня, но вы должны объединить файлы удаленных репозиториев в локальные файлы:

git init
git remote add origin url-to-git
git branch --set-upstream-to=origin/master master
git fetch
git status
3
ответ дан RODNEY ZHANG 27 August 2018 в 23:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: