Добре, ето какво става.
Имам инсталиран Git на моя отдалечен сървър Debian (lenny). Версията на Git е 1.5.6.5. Възнамерявам да го използвам като отдалечено споделено/резервно хранилище.
Машината ми за разработка работи с Windows, където е моят Eclipse с EGit. Ето какво направих:
- Създаден споделен потребител за git.
- Настройте SSH (в Eclipse и на сървъра), обменихте публични ключове и т.н., всичко мина добре.
- Създадох отдалечено репо и го инициализирах с git --bare init.
- Създаден проект в локално репо, направи няколко промени и ангажименти, успешно.
- Преместен главен клон от локално репо към отдалечено главно. Дотук добре.
- (В допълнение, на трета машина клонирах отдалеченото репо (чрез импортиране на EGit) без никакви проблеми.)
„Странните“ неща започнаха, когато изтрих няколко файла от проекта, комитирах и след това се опитах да изтегля от дистанционно, очаквайки да възстановя изтрити елементи, тъй като последната моментна снимка, която беше насочена към отдалечено, имаше всички файлове. Тъй като pull по същество е fetch + merge, изглежда, че EGit има известни проблеми по отношение на стратегията за сливане. Въпреки това конфигурирах извличане, което доведе до следната спецификация за извличане:
refs/heads/master:refs/remotes/amrtest1/master
Извличането мина добре, поне изглеждаше така, беше създадена нова папка в локалното хранилище за отдалечения главен клон и забелязах, че FETCH_HEAD също е там.
С изваден локален главен клон се опитах да се слея с отдалечения главен клон ... Резултатът беше:
- Локално изтритите файлове не бяха възстановени.
- в перспективата за синхронизиране можех да видя липсващите файлове (в изходящия режим?)
- В изгледа на историята на EGit действието по извличане беше хронологично преди локалния комит (след изтриване на файлове), което със сигурност не е правилно.
Правя ли нещо нередно тук? Невалидни ли са очакванията ми за възстановяване на състоянието въз основа на описания процес? Ако е така, какъв би бил начинът (да се възстанови състоянието на дистанционното репо или поне да се слее правилно със съществуващото локално)?
Благодаря.