2015-09-09 4 views
2

Фактически репозиторий git и локальные файлы в точности совпадают.Git pull only one commit

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

Итак, теперь я хочу внести некоторые изменения в свои локальные файлы, а затем перетащить их в новую фиксацию в git-репозиторий, ТОГДА сможет только PULL, что один коммит, а не все остальные ... Могу ли я это сделать?

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

+1

Это почему вы не должны развиваться на главной ветви. – developerbmw

+1

Вы можете создать патч или нажать фиксацию на новую ветку и выбрать вишневый оттуда –

+0

Это первый результат после того, как вы зашли в свой заголовок вопроса: http://stackoverflow.com/questions/2680426/how-to-pull- one-commit-at-time-from-a-remote-git-repository Вы видели это? –

ответ

2

Если вы хотите, чтобы вытащить один коммит, вы можете просто «перезагрузка 'в том, что совершить ..

git reset --hard <commit> 

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

git checkout -b foo 

это сокращение для

git branch foo 
git checkout foo 

Вы можете вытащить эту ветвь на любой машине с

git clone -b *foo* http//[email protected]:bitbucket.org 

или что-то вроде

git clone -b *foo* ssh://[email protected]/path/to/repo.git 
2

git pull существенно сокращенным для git fetch (удаленная загрузка удаляется в ветви удаленного отслеживания), а затем git merge (объедините свой HEAD, то есть текущий фиксатор, с теми, которые вы только что загрузили).

Вы можете получить гибкость вы ожидаете от расцепления оба шага:

  • Сначала запустите git fetch, затем проверить историю вы только что загрузили (если вы работаете на master ветви, git fetch должны были загружены удаленные коммиты в филиале origin/master, который вы можете проверить с помощью git log origin/master).

  • Затем объедините фиксацию, которую хотите, используя git merge <commit>. Примечание: git merge получит все изменения в <commit> и его родословную, так что это работает, если <commit> является самым старым не объединенным фиксатором. Если у вас нет каких-либо распущенных коммитов, это будет «ускоренная перемотка вперед», то есть не создаст новую фиксацию, а просто добавит HEAD к этой фиксации. Если вы не довольны git merge, у вас есть другие варианты, как git rebase, git cherry-pick ...

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