2012-04-23 55 views
1

帮助!我的git回购在泡菜!本地和远程git回购是不同的,但表明“已经最新”

推送和拉本地和远程分支机构说Already up-to-date.但检查文件显示它们之间的差异。

这很复杂,因为我有两个本地分支,master和staging,每个分支都跟踪相同的远程版本。

我花了几个小时试图找出一个系统的方法来解决这个问题。但我担心我会变得更糟,并在这个过程中失去编辑。

在这些情况下是否有推荐的方法?

EDIT

->git remote show origin     
* remote origin 
    Fetch URL: [email protected]:mygits/myrepo.git 
    Push URL: [email protected]:mygits/myrepo.git 
    HEAD branch (remote HEAD is ambiguous, may be one of the following): 
    master 
    staging 
    Remote branches: 
    master tracked 
    staging tracked 
    Local refs configured for 'git push': 
    master pushes to master (up to date) 
    staging pushes to staging (up to date) 
+1

克隆你的远程分支到第一个地方,以防你把它搞砸了。 – Alex 2012-04-23 17:09:39

+1

你确定'git status'干净吗?假设是这样,重要的是人们能够帮助你解释你当前的分支是什么,以及你使用的是什么形式的'git pull'和'git push'命令,特别是如果你是指定其他参数。 – 2012-04-23 17:10:34

+0

请显示您使用的命令,以便我们看到分支机构的使用情况。 – 2012-04-23 17:10:50

回答

1

你 'git的远程来源显示' 表示主站和分期是相同的。所以两者都是'最新'也许并不奇怪,但这取决于你在当地拥有什么。浏览了一下有:

git fetch origin 
git diff --name-status master..origin/master   # ditto for 'staging' 
git diff --name-status master..staging     # local differences 

有了这三个“diff文件”(如图二,一为多“出身/分期”),你有关于在想什么混帐的理解是你的四个提交之间的差异分支机构。

你仍然有工作目录中的内容存在差异,但'git status'会向你显示这些内容,它们与你的推拉问题无关。 (如果有什么地方差异会阻止你没有注意到的问题)

+0

感谢GoZoner。 git列出了差异,并指出文件已被删除。但推动也说明一切都是最新的。我也无法出于同样的原因。我刚刚完成了'git reset --hard <<最近的commit ref >>'。这已经添加了以前被删除的几个文件。我似乎没有失去任何补充。我还没有尝试'git add .'和'git commit -m“msg”',但却说'更改不会被提交到commit:',我仍然无法按'已经更新'推送。这很令人费解! – 2012-04-23 18:23:04

+0

好吧,我刚刚尝试提交-a,似乎有东西再次移动。我现在可以推。我仍然不确定是否丢失了任何修改。我仍然在找git。一个硬复位后跟一个提交 - 听起来像是一个合理的解决方案。有什么副作用,我应该寻找? – 2012-04-23 18:42:05

+1

这听起来像你缺乏有关单个用户工作流程的基本信息。搜索'git教程'。通常你可能想避免'git reset',因为你可能会失去东西。但是,实际上,如果您尝试使用'git add'和'git commit'的变体,那么您需要一些教程信息。 – GoZoner 2012-04-23 19:33:37