(马)git branches让我发疯

时间:2012-03-16 07:59:10

标签: git emacs branch master magit

使用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. 来自我当地的分支机构 - 我必须结账,然后合并,以推动我的更改:主人或原始主人吗?

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

  4. 很抱歉这个相当noob的问题,我读了一些关于git的好教程,但仍然没有得到我的heasd在主分支。

1 个答案:

答案 0 :(得分:1)

请按以下方式找到答案:

  

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

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

  1. a4cc383 master [remotes // master](??我不知道为什么你有这个分支,你做了什么操作?)
  2. e08a624 origin-master [remotes / origin / master] //这个分支没问题,它代表你的远程主机,如果你使用git fetch,你可以得到这个分支的最新变化。
  3. 6a64828 tj-branch //这是好的,你的分支。
  4. a4cc383 remotes / origin / master //我不知道为什么你有两个遥控器/原点/主人,但沙值不同。
  5. 实际上,你可以进入你的.git文件夹,而cd refs,在这个文件夹中,你的本地分支将在refs / heads / .....中,你的远程分支应该在这里:refs / remotes / origin / XXX

      

    来自我的本地分支 - 我必须签出哪个主人,然后合并,推动我的更改:主人或原始主人?

    你可以从master检查你的主题,做一些更改,提交它们,git checkout master,然后git合并你的更改,然后按这样推送你的更改,git push origin [你的远程仓库的默认名称] master [本地分支]:master [remote branch] // git非常聪明。

      

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

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

    希望这对你有所帮助。

    BR, 添