2017-02-12 5 views
-1

У меня есть репозиторий, которые имеют п совершает, я хочу, чтобы создать новое хранилище от некоторого конкретного м совершала,Новый репозиторий с конкретной фиксацией

Пример, Repository А имеет 10 коммиты, а с 4-го предаю хочу создать новый репозиторий B независимо от А.

Я попробовал несколько вещей, но они не работают, как мерзавца клон и затем в новом каталоге мерзавец проверке и несколько вариантов ответов на переполнении стека,

How do I create a new git repository from a folder in an existing git repository?

how to create a new git repository from an existing one

но не смог выполнить его с точки зрения фиксации. Кто-нибудь может помочь.

Благодаря

+0

Вы хотите создать новый корневой фиксатор с тем же контентом, что и некоторые другие фиксации? – PetSerAl

+0

Вопрос нуждается в уточнении. Создание примерного графика может многое помочь. – LopSae

ответ

0

Clone репо А. Удалить удаленный «происхождение», если вы хотите его независимым. И затем (узнайте, как и) используйте git rebase -i, чтобы выбрать фиксации для сохранения, удаления или сквоша. Если у вас только 10 коммитов и что фиксации, которые вы хотите удалить, не имеют более поздних коммитов, это должно хорошо работать ...

0

Как часто бывает с git, есть много способов скинуть кошку :)

альтернатива выше ответ является добавление пустого репозитория в качестве пульта дистанционного управления и нажмите фиксации с помощью git push other_remote commit:refs/heads/master

Вот демонстрация:

# Set up the parent repo 
$ git init repo1 
Initialized empty Git repository in /tmp/repo1/.git/ 
$ cd repo1 
$ seq 10 | xargs --replace git commit -m 'commit {}' --allow-empty 
[master (root-commit) 7444793] commit 1 
[master 6b12c35] commit 2 
[master 3743f03] commit 3 
[master b4221a7] commit 4 
[master f7e1009] commit 5 
[master 4c8e4e9] commit 6 
[master 6618f10] commit 7 
[master a1c1b26] commit 8 
[master 802bed2] commit 9 
[master 13734f2] commit 10 
# Set up the new repo 
git init ../repo2 
# Allow pushing to the master branch 
git -C ../repo2 config receive.denyCurrentBranch ignore 
# Add the other repo as a remote 
git remote add other_remote ../repo2 
# Push the commit 5-back to repo2's master branch 
# Note you can use anything that resolves to a refish like thing (a branch, a commit, a tag, etc.) 
git push other_remote HEAD^^^^^:refs/heads/master 
# Show our handywork 
$ cd ../repo2 
$ git log --oneline 
f7e1009 commit 5 
b4221a7 commit 4 
3743f03 commit 3 
6b12c35 commit 2 
7444793 commit 1 
0

Скажет фиксацию истории O f master в Repo A - A-B-C-D-E. Целью является создание Repo B с ветвью, указывающей на C.

git init RepoB 
cd RepoB 
git fetch <path_of_RepoA> master 
git checkout -b master C