2013-04-10 4 views
2

Я работаю во множестве разных проектов и хотел бы использовать git-tfs с нескольких компьютеров без дополнительного голого хранилища.Git tfs без голого хранилища

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

Я надеялся, что я мог бы сделать что-то вроде этого:

Clone из TFS и создать "работу" филиал

cd centralrepository 
git tfs quick-clone --shared http://tfs.. $/tfsfolder . 
git branch work 

на стороне клиента клон рабочей ветви

git clone --branch work --single-branch path/to/centralrepository 

сделать работать на стороне клиента, совершать и нажимать на центральный

... 
git commit -m"my work" 
git push 

на центральный снова, получать обновления от TFS, применить изменения в «работе» и оттеснить

git tfs pull 
git rebase master work 
git checkout master  // rebase checks out the work branch 
git merge work 
git tfs checkintool 

теперь назад на клиенте, тянуть и продолжать работу

git pull 
... 
git push 

Но это не работает, который вероятно, очевидны для опытных пользователей git

Что происходит, так это то, что изменения объединены как в центральном, так и в клиентском конфликтах, так как rebase будет применять изменения дважды.

Является ли вся идея ошибочной или я просто пропустил какой-то шаг.

ответ

1

Когда я продумал сценарий немного, я нашел ошибку.

Отвод, конечно, не должен быть переустановлен в центральном хранилище. work следует просто объединить с master, а затем быстро перенаправить.

Он должен выглядеть следующим образом:

git tfs pull 
git merge work 
git checkout work 
git merge -ff-only master 
git checkout master 
git tfs checkintool