git“本地更改已检入索引但未提交”

时间:2013-05-22 19:03:39

标签: git rollback undo

我在家用桌面上编辑了文件并推送到bitbucket.org并上传到我的测试网站。 然后我从bitbucket.org拉到我的笔记本电脑。   它告诉我我需要合并文件,但我不知道如何将文件从测试网站复制到笔记本电脑本地目录并继续我的工作。 我认为我通过合并过程笨蛋并使用gitg进行了更改(不确定我是否确实提交)。

当我尝试从笔记本电脑推送到bitbucket.org时,我的问题和无知变得更加明显:

kurt@tosh ~/Public/laddercms $ git status

On branch NumPermit
Your branch is ahead of 'origin/NumPermit' by 2 commits.

nothing to commit (working directory clean)

kurt@tosh ~/Public/laddercms $ git push -u origin NumPermit 

Password
for 'https--kurtjensen@bitbucket.org':  To
https--kurtjensen@bitbucket.org/kurtjensen/laddercms.git  !

[rejected]        NumPermit -> NumPermit (non-fast-forward) error:
failed to push some refs to 'https--kurtjensen@bitbucket.org/kurtjensen/laddercms.git' 
hint: its remote counterpart. Merge the remote changes (e.g. 'git
pull') hint: before pushing again. hint: See the 'Note about
fast-forwards' in 'git push --help' for details.

kurt@tosh ~/Public/laddercms $ git pull origin NumPermit 

Password for
'https--kurtjensen@bitbucket.org':  From
https--bitbucket.org/kurtjensen/laddercms  * branch           

NumPermit  -> FETCH_HEAD Auto-merging profile/ajax/ProfileForm.php

CONFLICT (content): Merge conflict in profile/ajax/ProfileForm.php
Auto-merging Core/protect.php 

CONFLICT (content): Merge conflict in Core/protect.php Auto-merging 
Core/class.credentials.php 

CONFLICT (content): Merge conflict in Core/class.credentials.php 
Auto-merging Core/class.access.php 

CONFLICT (content): Merge conflict in Core/class.access.php Automatic
merge failed; fix conflicts and then commit the result.

我的本​​地笔记本电脑文件是我想保留的(我最信任它们是正确的。)

现在用gitk我看到了:

  

作者:提交者:家长:   9d2cd77d4250bbf71e367021acf65e2c2465d0df(新的Protect.php工作正常   据我所知,即使是NLIKey)孩子:   0000000000000000000000000000000000000000(本地未提交的更改,   没有签到索引)分支:跟随:Precedes:

Local changes checked in to index but not committed

如何将(桌面,笔记本电脑,bitbucket)的世界恢复到“提交/签到”点?

提前致谢...

引用:“Messes是我的专长。”

1 个答案:

答案 0 :(得分:1)

下次有些信息可以帮助您省去麻烦:

  

它告诉我我需要合并文件,但我不知道如何将文件从测试网站复制到笔记本电脑本地目录并继续我的工作

当您从桌面推送到bitbucket时,您应该在笔记本电脑上完成以下操作:

git fetch origin
git checkout master
git merge origin/master

fetch检索远程分支上的所有最近更改,checkout将您置于要合并到的任何本地分支中(在本例中为master),merge命令表示将origin / master中的任何内容合并到您的当地分公司主人。这是一个非常基本的工作流程,2个人在同一个项目上工作。

无论如何,为了快速而肮脏地恢复而不保留历史记录,我只需删除.git文件夹,然后在根文件夹git initgit remote add <alias> <url>中运行git add . {1}} + git push alias master -f。为了更智能的恢复方式,您需要提供有关git状态的更多信息并稍微清理一下帖子。