1

使用 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 是跟踪分支,并掌握它的本地副本。但是在我可以推送之前我需要 2 次合并 - 那么 tj-branch 不是多余的吗?

关于什么

a4cc383 remotes/origin/master

这也是一个分支吗?它为什么存在,我为什么需要它?

我的问题:

  1. 我真正需要哪些分支,哪些可以删除?

  2. 从我的本地分支 - 我必须结帐,然后与哪个 master 合并,以推送我的更改:master 还是 origin-master?

  3. 当我尝试更改分支时,我经常被要求保存打开的 emacs 缓冲区,然后被告知“文件已在磁盘上更改,你真的要更改吗”,这非常令人困惑,因为我有时不知道哪个是新版本 - 在磁盘或缓冲区上。这个问题来自哪里?

抱歉这个相当菜鸟的问题,我阅读了一些关于 git 的好教程,但仍然不了解 master 分支。

4

1 回答 1

1

请找到以下答案:

我真正需要哪些分支,哪些可以删除?

现在,我从您的日志中看到以下分支:

  1. a4cc383 master [remotes//master] (??我不知道你为什么有这个分支,你做了什么操作?)
  2. e08a624 origin-master [remotes/origin/master]// 这个分支没问题,它代表你的远程master,如果你使用git fetch,你可以得到这个分支的最新更改。
  3. 6a64828 tj-branch //没关系,你的分支。
  4. a4cc383 remotes/origin/master //我不知道为什么你有两个 remotes/origin/master,但是 sha 值不同。

实际上,你可以进入你的 .git 文件夹,然后 cd refs,在这个文件夹中,你的本地分支将在 refs/heads/.....,你的远程分支应该在这里:refs/remotes/origin/xxx

从我的本地分支 - 我必须结帐,然后与哪个 master 合并,以推送我的更改:master 还是 origin-master?

您可以从 master 签出您的主题,进行一些更改,提交它们,git checkout master,然后 git 合并您的更改,之后,像这样推送您的更改,git push origin[远程仓库的默认名称] master[本地分支]:master[远程分支]// git 太聪明了。

当我尝试更改分支时,我经常被要求保存打开的 emacs 缓冲区,然后被告知“文件已在磁盘上更改,你真的要更改吗”,这非常令人困惑,因为我有时不知道哪个是新版本 - 在磁盘或缓冲区上。这个问题来自哪里?

您必须在结帐前提交您的本地更改,如果您不想提交,您可以使用 git stash //这会让您保持更改,如果您想恢复它,您可以使用 git stash apply

希望这对你有帮助。

兄弟,蒂姆

于 2012-03-16T08:47:57.893 回答