(Ма) мерзавцы меня сводят с ума - PullRequest
1 голос
/ 16 марта 2012

Используя Emacs / Magit, у меня сначала был очень плавный опыт работы с git в другом проекте, но в моем реальном проекте я смущен всеми ветками и раздражен не отслеживаемым # file.ext #, который всплывает все время , Вот как это выглядит:

a4cc383 master [remotes//master]
e08a624 origin-master [remotes/origin/master]
6a64828 tj-branch
a4cc383 remotes/origin/master

То, что я планировал сделать, - это работать в моей личной ветке (tj-branch), фиксировать, затем сливаться с master, затем отправлять в удаленный репозиторий. Но у меня слишком много основных веток на мой вкус. Я бы ожидал, что origin master будет ветвью отслеживания, а master - локальной копией. Но тогда мне понадобится 2 слияния, прежде чем я смогу выдвинуться - разве тогда не будет избыточна ветка tj?

Как насчет

a4cc383 remotes/origin/master

Это тоже ветка? Почему оно существует, зачем оно мне?

Мои вопросы:

  1. какие ветки мне действительно нужны, какие можно удалить?

  2. из моего местного филиала - какого мастера мне нужно оформить, а затем объединить, чтобы протолкнуть мои изменения: мастер или origin-master?

  3. когда я пытаюсь сменить ветки, меня часто просят сохранить открытые буферы Emacs, а затем говорят: «файл изменился на диске, вы действительно хотите это изменить», и это очень сбивает с толку, потому что я не иногда знаю, какая из них является новой версией - на диске или в буфере. Откуда эта проблема?

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

1 Ответ

1 голос
/ 16 марта 2012

Пожалуйста, найдите ответ следующим образом:

какие ветви мне действительно нужны, какие можно удалить?

Теперь я вижу следующие ветки из ваших журналов:

  1. a4cc383 master [remotes // master] (?? Я не уверен, почему у вас есть эта ветка, какую операцию вы сделали?)
  2. e08a624 origin-master [remotes / origin/ master] // с этой веткой все в порядке, она представляет ваш удаленный мастер, если вы используете git fetch, вы можете получить последние изменения в этой ветке.
  3. 6a64828 tj-branch // Это нормально, ваша ветка.
  4. a4cc383 remotes / origin / master // Я не уверен, почему у вас два пульта / origin / master, но разные значения ша.

На самом деле, вы можете перейти к своему.папка git и cd refs, в этой папке ваша локальная ветка будет в refs /heads / ....., ваша удаленная ветка должна быть здесь: refs / remotes / origin / xxx

из моего местного филиала - какого мастера мне нужно оформить, а затем объединить с ним, чтобы протолкнуть мои изменения: мастер или origin-master?

Вы можете оформить свою тему у мастера, внести некоторые изменения, зафиксировать их, git checkout master и git объединить свои изменения, после этого отправить изменения следующим образом: git push origin [имя по умолчанию для вашего удаленного репо] master [локальная ветка]: master [удаленная ветка] // git такой умный.

, когда я пытаюсь сменить ветки, меня часто просят сохранить открытые буферы Emacs, а затем говорят «файл изменился на диске, вы действительно хотите его изменить», и это очень сбивает с толку, потому чтоиногда не знаю, какая новая версия - на диске или в буфере.Откуда эта проблема?

Вы должны зафиксировать свои локальные изменения перед извлечением, если вы не хотите фиксировать, вы можете использовать git stash // это сохранит ваши изменения, если вы хотитевосстановить его, вы можете использовать git stash apply

Надеюсь, что это полезно для вас.

Br, Тим

...