2014-01-09 5 views
2

Предыстория:Слияния без мерзавцев папки с папкой мерзавца

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

У меня есть актуальная папка веб-сайта и папка, которая не обновлена, но имеет все мои изменения. Есть ли все равно, чтобы объединить эти папки, которые сохраняют внесенные мной изменения и другие изменения?

Я беспокоюсь, что если я обновляю основную папку проекта, я мог бы случайно перезаписать их изменения, не осознавая этого.

Я думал об использовании Meld, но я открыт для предложений.

ответ

3
  • Clone the original repository.

    git clone $url repo 
    cd repo 
    
  • Checkout фиксация скопирована, когда вы начали свою работу

  • Создать новую ветвь в этой точке

    git checkout -b my_work $sha1 
    
  • Добавьте свою работу в качестве нового коммита в новой отрасли

    cp -r /path/to/untracked/dir . 
    git add . 
    git commit -am 'fixed nasty bug' 
    
  • опционально есть посмотреть на ваши изменения

    git show 
    
  • проверку основной ветви

    git checkout master 
    
  • сливаться вам новую ветвь в главной ветви

    git merge my_branch 
    
  • разрешить любой конфликт, который может возникнуть

    git mergetool -t meld 
    

(Вместо meld вы можете использовать любой другой инструмент, который вам нравится. Я бы предложил kdiff3.)

+0

Большое спасибо за помощь. Я попробую это сразу. У меня есть два вопроса. 1) Каков наилучший способ просмотра истории фиксации, чтобы я мог найти свою начальную точку и 2) что означает аргумент $ sha1? –

+0

После того, как клон выполнил 'git log' или' gitk'. Это покажет вам историю текущей ветви. Каждая фиксация идентифицируется 40-значным идентификатором фиксации sha1. Если вы можете найти правильную фиксацию, используйте ее id как «$ sha1». - Попытайтесь вспомнить, когда вы скопировали свой код и из какой ветви. Поиск правильной фиксации имеет решающее значение. - Используйте вышеприведенный шаг 'git show', чтобы убедиться, что показанные изменения действительно выполнены вами. Если есть и другие изменения, вы, скорее всего, выбрали неверную фиксацию. – michas

Смежные вопросы