Как объединить код в Eclipse

Как расставить точки в Eclipse?

Я создал проект приложения для Android в Eclipse и поставил его под контроль версий с помощью eGit и BitBucket (опять же, я не знаю, лучший ли это способ описать его, поскольку я новичок в управлении версиями). Я написал некоторый код и сделал несколько коммитов. Я пригласил друга, который присоединился к проекту. Прошлой ночью они изменили часть кода.

Сегодня я запускаю Eclipse и хочу продолжить работу над проектом, но хочу начать с того места, где они остановились. Я щелкаю правой кнопкой мыши по проекту и иду в Team -> Synchronize (просто потому, что это показалось мне наиболее логичным шагом). Ничего не произошло, как я опасался.

Как получить последнюю версию рабочего кода на свой локальный компьютер? И когда я закончу свою работу, я просто зафиксирую, как я это делал, щелкнув проект правой кнопкой мыши, а затем перейдя к: Команда -> Зафиксировать, а затем Команда -> Отправить в восходящий поток?


person heyred    schedule 19.09.2013    source источник
comment
Нашел решение здесь, опубликованное VonC. stackoverflow.com/ вопросы/15284706/   -  person heyred    schedule 23.09.2013


Ответы (3)


В Eclipse начните использовать проекцию Git Repository Explorer и Git Staging View.

Обозреватель репозитория показывает ваш клон, позволяя вам видеть ваши ветки, историю изменений и т. д. Вы можете щелкнуть правой кнопкой мыши по имени вашего клона и выбрать «Потянуть». Это позволит получить изменения с сервера Bitbucket, а затем объединить их с вашей локальной веткой.

Обратите внимание, что вы не должны тянуть до тех пор, пока вы не спрячете какие-либо локально измененные файлы или не зафиксируете их в своей ветке. Если запрос конфликтует с какими-либо локальными изменениями, действие будет отклонено.

Поскольку вы делитесь веткой с другими людьми, вам следует подумать об изменении вашей локальной (главной?) ветки через Configure Branch..., чтобы включить параметр Rebase. Это означает, что когда вы объединяете удаленные изменения в своей локальной ветке, любые исходящие коммиты воспроизводятся поверх входящих. Это означает, что когда вы нажимаете, вы избегаете точек слияния, которые могут загромождать историю. Поощряйте других людей, работающих в своих репозиториях, делать то же самое.

Во-вторых, когда вы фиксируете изменения, научитесь использовать представление Git Staging. Это позволяет легко перетаскивать изменения и фиксировать их за один раз. Вы также можете сделать это из Team | Добавить и Команда | Подтвердить... но ИМО это гораздо более неуклюже.

Когда вы будете готовы к тому, чтобы другие увидели ваши совершенные изменения, вы должны подтолкнуть их. Обычно вы должны либо щелкнуть правой кнопкой мыши по проекту, либо выбрать Team | Отправьте в восходящий поток или перейдите в обозреватель репозитория, щелкните правой кнопкой мыши клон и выберите «Отправить в восходящий поток». При необходимости вам, возможно, придется извлечь, прежде чем вы сможете нажать, потому что сервер отклонит изменения, если они не удовлетворяют требованиям слияния.

Это основной рабочий процесс использования Git в Eclipse. Как правило, также убедитесь, что ваша версия плагина EGit не ниже 2.3.1 или 3.0.1 в зависимости от вашей версии Eclipse.

person locka    schedule 24.09.2013

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

person Clover Wu    schedule 19.09.2013
comment
Нет, он определенно подтолкнул фиксацию, потому что я могу просмотреть обновленный код на BitBucket — код, который он изменил и зафиксировал. И если я правильно понимаю ваш второй пункт, я не должен делать коммит сейчас, потому что это может вызвать конфликтующие ошибки? Да вот этого я и боюсь. Я не хочу менять код и фиксировать до получения последней версии. - person heyred; 19.09.2013
comment
Только что попробовал Team -> Fetch From Upstream. Здесь я вижу их коммит. Я выбираю это и нажимаю OK, но ничего не происходит. Есть ли что-то, что я упускаю или не делаю сначала/после этого шага? - person heyred; 19.09.2013
comment
Может быть, мне нужно Team -> Commit после I Team -> Fetch from Upstream? Итак, я фиксирую Fetch в своем локальном репо? По сути, сделать фиксацию репо в обратном порядке? Не решаюсь попробовать это на случай, если я перезапишу их код. - person heyred; 19.09.2013

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

Если в Windows загрузите и установите msysgit

Затем щелкните правой кнопкой мыши папку проекта eclipse — выберите Git Bash здесь и выполните команду

$ git pull

Проблема с fetch заключается в том, что он только извлекает - pull извлекает, но также объединяет извлеченные коммиты.

person Mr_and_Mrs_D    schedule 22.09.2013
comment
Спасибо за ответ, но я стараюсь держаться подальше от командной строки, так как это создаст для меня еще больше проблем, так как у меня совсем нет в этом опыта. Я нашел ответ, хотя после нескольких часов попыток всего. Ответ указан со ссылкой на решение. Спасибо еще раз за помощь. - person heyred; 23.09.2013
comment
@HansMoolman: У вас будут бесконечные проблемы с eGit - я тоже не использую командную строку - но для некоторых вещей это рекомендуется - и в любом случае вы можете использовать git gui для нажатия. Поверьте мне, вы либо изучаете msysgit, либо входите в мир боли. Git действительно великолепен, но есть кривая обучения, и, игнорируя его, вы в конечном итоге потеряете свою работу. Вас предупредили. Кстати, опубликуйте свой ответ как ответ и примите его - это правильно. - person Mr_and_Mrs_D; 23.09.2013
comment
Извините, я думал, что разместил ответ. Но, к счастью, я этого не сделал, поскольку я думал, что вызвал больше проблем в будущем. Вы можете быть правы относительно. eGit. Я попробую еще одно решение и попробую msysgit. - person heyred; 25.09.2013
comment
@HansMoolman: На самом деле это очень просто - и если вы не редактировали файлы, вам не придется объединять их вручную (это может быть сложно, но это часть git (или контроль версий вообще) не msysgit, egit и т. д.). Пожалуйста сделайте и отпишитесь о результатах - person Mr_and_Mrs_D; 25.09.2013