Как раз тогда, когда я подумал, что смог овладеть git checkout -b newbranch - commit / commit / commit - git checkout master - git merge newbranch - git rebase -i master - git push рабочий процессв мерзавце что-то взорвалось, и я не вижу причин для этого.
Вот общий рабочий процесс, который работал для меня в прошлом:
# make sure I'm up to date on master:
$ git checkout master
$ git pull # k, no conflicts
# start my new feature
$ git checkout -b FEATURE9 # master @ 2f93e34
Switched to a new branch 'FEATURE9'
... работа, фиксация, работа, фиксация, работа, фиксация ...
$ git commit -a
$ git checkout master
$ git merge FEATURE9
$ git rebase -i master # squash some of the FEATURE9 ugliness
Хорошо, пока;теперь то, что я ожидаю увидеть - и обычно вижу - вот что:
$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)
Но вместо этого я вижу только " ничего для фиксации (рабочий каталог чист) * ", нет" Ваша ветвь опережает 'origin / master' на 1 коммит. ", и git pull показывает эту странность:
$ git pull
From . # unexpected
* branch master -> FETCH_HEAD # unexpected
Already up-to-date. # expected
А git branch -a -v показывает это:
$ git branch -a -v
FEATURE9 3eaf059 started feature 9
* master 3eaf059 started feature 9
remotes/origin/HEAD -> origin/master
remotes/origin/master 2f93e34 some boring previous commit # should=3eaf059
ветвь git ясно показывает, что я в данный момент на * master, а журнал git ясно показывает, что master (local) имеет значение 3eaf059, в то время как remotes / origin / HEAD -> remotes / origin / master застрялобратно на развилку.
В идеале я хотел бы знать семантику того, как я мог в это разобраться, но я бы предпочел, чтобы моя рабочая копия снова отслеживала удаленный мастер и получалавернуться в синхронизацию без потери истории.Спасибо!
( Примечание. Я повторно клонировал репозиторий в новом каталоге и заново применил изменения вручную, и все работало нормально, но я не хочу, чтобы это был стандартный обходной путь.)
Приложение : в заголовке написано «не могу нажать», но сообщения об ошибке нет.Я просто получаю ответ «уже в курсе», хотя git branch -a -v показывает, что локальный мастер опережает / remotes / origin / master.Вот вывод из git pull и git remote -v соответственно:
$ git pull
From .
* branch master -> FETCH_HEAD
Already up-to-date.
$ git remote -v
origin git@git.company.com:proj.git (fetch)
origin git@git.company.com:proj.git (push)
Добавление 2 : выглядит так, как будто мой локальныймастер настроен на push на пульт, но не на его извлечение.После выполнения for remote in 'git branch -r | grep -v master '; do git checkout --track $remote ; done
вот что у меня есть.Кажется, мне просто нужно получить мастер , извлекая из пульта / источника / мастера снова, нет?
$ git remote show origin
* remote origin
Fetch URL: git@git.company.com:proj.git
Push URL: git@git.company.com:proj.git
HEAD branch: master
Remote branches:
experiment_f tracked
master tracked
Local branches configured for 'git pull':
experiment_f merges with remote experiment_f
Local refs configured for 'git push':
experiment_f pushes to experiment_f (up to date)
master pushes to master (local out of date)