Как я воспроизвожу свои фиксации локального репозитория Мерзавца сверху проекта, который я разветвил на github.com?

Если я вспоминаю, что это правильно resharper являются просто дополнительные функции, которые Intellj (jetbrains язь) имеет по умолчанию для java

10
задан Peter Mortensen 17 July 2018 в 21:26
поделиться

3 ответа

Когда я попробовал git pull , у меня возникла следующая ошибка:

$ git pull grid master:master
! [rejected]        master     -> master  (non fast forward)

В моем конкретном случае казалось, что git rebase был подходящим способом пойти за мной, как показано в следующих шагах:

#Clone my forked project from github
git clone git@github.com:program247365/mojombo.github.com.git 

#Add my repo as a remote repo, with the alias 'grid'
git remote add grid "path/to/remote/gitrep/with/all/history/unrelated/to/mojombo/" 

#Rebase my commits on top of mojombo's
git rebase master grid/master

#Switch to the local master branch 
git checkout master

#Call up my mergetool via git, to start rectifying the conflicts that emerge between my repo, and mojombo's
git mergetool

#Push my rebased/combined repo back to Github.com
git push github
5
ответ дан 3 December 2019 в 16:53
поделиться

Вот мысль о том, что вы могли бы сделать. Это как бы противоположно той идее, которую вы изложили в конце своего вопроса.

  1. Создайте репозиторий mojombo на GitHub.
  2. Клонируйте вашу разветвленную копию.
  3. Слейте свои изменения из вашего существующего (исходного) репозитория.
  4. Удалите исходный репозиторий (при желании, но он вам больше не нужен).

Итак, в основном, после разветвления на GitHub, вы можете использовать следующую последовательность команд:

$ git clone git://github.com/$YOUR_USERNAME/$YOUR_PROJECT.git  # Clone your GitHub fork (#2 from above)
$ git pull /path/to/your/original/repo master:master           # Clone your original repo's master branch into your new repo (cloned from GitHub)
$ rm -rf /path/to/your/original/repo                           # Might as well delete the original -- you don't need it anymore, since all your history is in your new repo

Таким образом, этот метод будет объединить все изменения, которые вы внесли в старое репо (таким образом, сохранив историю разработки), а также вытащить историю моджомбо, и , что позволит вам идти в ногу с изменениями моджомбо / легко вносить изменения обратно в его репо, если применимо.

4
ответ дан 3 December 2019 в 16:53
поделиться

Вкратце:

Одно из решений - использовать графтов для подключения истории, затем использовать git filter-branch , чтобы переписать историю в соответствии с этими графтами, затем, при желании, выполнить merge .

Обратите внимание, что решение для воспроизведения ваших изменений (ваших коммитов) поверх новой разработки в исходном репозитории (решение rebase ) является еще одним жизнеспособным решением.


Более длительный срок. версия:

Предположим, вы либо помните, или вы можете найти, изучив исходный код и / или используя команды git, версию репозитория, из которого вы загрузили снимок и начали локальную разработку. Назовем эту ревизию START или A.

Предположим, что ваша локальная история отключения находится в клоне исходного репозитория. Это означает, что ваша локальная отключенная разработка находится в том же репозитории, что и полная история проекта. Предположим, что ваши локальные ветки находятся в ветке 'master' (и для простоты есть только одна ветка).

Если вы не загрузили проект в репозиторий с вашей локальной отключенной работой, вы можете сделать это с помощью:

$ git remote add origin git://github.com/mojombo/mojombo.github.com.git
$ git fetch origin

] История теперь выглядит следующим образом:

*---*---*---*---*---A---*---*---*---*      <--- origin/master (remote-tracking branch)

                                     x---y---*---*---*      <--- master (your local disconnected history)

Коммит с именем A на диаграмме выше - это коммит START, который вы загрузили в виде снимка и начали локальную разработку.

Есть две возможности: START ') в качестве родителя как FIRST (это будет' x 'или' y ', в зависимости от вашего случая, как указано выше). Теперь мы используем механизм графтов для подключения истории:

$ echo "<SHA-1 of FIRST> <SHA-1 of START>" > .git/info/grafts

Затем вы должны проверить, правильно ли вы подключили (присоединили) историю, используя графический браузер истории, такой как gitk, или QGit, или GitX, если вы в MacOS X или даже « git log --graph » или « git show-branch », например:

$ gitk master origin/master    # or --all

(где gitk здесь только в качестве примера; если вы используете « git show branch », вы не всегда можете использовать параметр « - all »).

Наконец, мы, вероятно, захотим сделать эти изменения постоянными, так что любой, кто будет выборка из нашего репозитория также подключила бы историю. Мы можем сделать это с помощью git filter-branch :

15
ответ дан 3 December 2019 в 16:53
поделиться
Другие вопросы по тегам:

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