Я хочу синхронизировать изменения с удаленным репозиторием Git (в GitHub) с помощью Git Api в Java (Egit и JGit). Как я могу это сделать? Возможно ли это, зная идентификатор HEAD между двумя версиями или каким-то другим способом?Как сравнить изменения между локальными изменениями и удаленным репозиторием
ответ
Простое знание HEAD
каждого из двух репозиториев достаточно, чтобы сказать вам, если они не синхронизированы, но недостаточно рассказать вам, какой из них стоит впереди другого. В общем случае более одного человека могут нажать на репозиторий, поэтому, если ваш локальный репозиторий всегда впереди вашего пульта, не будет разумным. Вам нужно будет использовать API, чтобы найти первую общую SHA и использовать ее, чтобы определить, как обрабатывать синхронизацию ваших репозиториев. Вы должны обрабатывать три (на самом деле больше) случаев:
- Ваше местное отделение находится впереди удаленного
- Ваш пульт дистанционного управления находится впереди локальный
- локальных и удаленных и имеют наборы фиксаций не с другой, например, вы выталкивали с одного компьютера, но не тянули сюда, или кто-то еще нажал на фиксации в последнее время, и вы не заметили и т. д.
Первые два случая тривиальны, третий - намного больше сложный. Вам всегда придется тянуть, прежде чем вы сможете синхронизировать свои локальные изменения с удаленным компьютером, и вытягивание может привести к конфликтам слияния. Если вы не будете осторожны, вы можете сломать некоторый код, пытаясь заставить совершить сделку, когда возник конфликт.
Не зная больше о том, что вы планируете делать или что такое ваш прецедент, я не могу дать вам больше помощи, чем это. Надеюсь, этого достаточно. :-)
- 1. SourceTree: см. Разницу между локальным репозиторием и удаленным репозиторием?
- 2. Разница между удаленным репозиторием git и текущей клонированной копией
- 3. ReactNative с удаленным репозиторием
- 4. TFS не синхронизирована между локальными и удаленными - как «пересинхронизировать»?
- 5. Как синхронизировать с удаленным репозиторием Git?
- 6. Автоматическая синхронизация с удаленным репозиторием git
- 7. 'origin' не является удаленным репозиторием
- 8. Разработка локально с удаленным репозиторием
- 9. Синхронизация локального репозитория с удаленным репозиторием
- 10. Как сделать установку msysgit удаленным репозиторием
- 11. конфликты в каталоге git с удаленным репозиторием
- 12. Использование mercurial's mq для управления локальными изменениями
- 13. Разница между репозиторием и плагином-репозиторием
- 14. Разница между локальными и удаленными репозиториями?
- 15. Как преобразовать локальный каталог в Git, сравнить различия с удаленным репозиторием, а затем зафиксировать?
- 16. Объединение магистрали в ветку с локальными изменениями
- 17. Использование Git, как найти изменения между локальными и удаленными
- 18. Обновление локального хранилища git с удаленным репозиторием
- 19. Использование git с удаленным репозиторием 'origin'
- 20. слияние локального репозитория с удаленным репозиторием
- 21. Git: см. Изменения между репозиторием и последним фиксатором
- 22. Egit: как синхронизировать проект eclipse (локальный репозиторий) с удаленным репозиторием
- 23. Интерфейс TFS с удаленным репозиторием Git
- 24. сравнить изменения между ветвями в git
- 25. Создание проекта Maven с локальным репозиторием и локальными зависимостями
- 26. SVN: отменять слияние с локальными изменениями
- 27. Получить diff (patch-файл), который содержит различия между локальным и удаленным репозиторием
- 28. Как получить разницу между текущим удаленным состоянием и локальным?
- 29. Как сравнить GIT Remote Repo и локальные в Netbeans
- 30. maven на windows с удаленным репозиторием и pscp не работает
Спасибо за описание всех трех сценариев. Я могу позаботиться об этом во время работы. Но в моем приложении есть функция «Обновить график», которая работает, предполагая, что удаленный всегда впереди локальный (как вы заявили в второй случай) и освежает себя удаленным (то есть заменяет собой последнее состояние удаленного репозитория). Это то, что я хочу достичь с помощью Git Api в Java.Pls предлагает, как это можно сделать. – Alok
Я не знаком с Java API, но я бы посоветовал не реализовывать это. Я могу только догадываться, что это вызовет гораздо больше головных болей, чем это вам поможет. Если вы просто начнете использовать лучшие методы git, вы обнаружите, что вам это никогда не понадобилось. Это касательно этого вопроса, хотя не стесняйтесь писать мне по электронной почте для более подробной информации. –
ok, но вы можете предложить команду в git bash, которая могла бы это сделать, просто зная HEAD ID.Я найду Java-код, эквивалентный этой команде. – Alok