我有一个非常简单的存储库。我和SourceTree做了两次提交。然后创建了一个分支working
。我在working
上做了提交。
我现在想将它合并回主人,以便我有一个线性历史记录。我是git的新手,现在确定我做错了什么。此时我无法结帐主人,因为我收到错误即使我没有工作副本更改:
git -c diff.mnemonicprefix=false -c core.quotepath=false checkout master
error: Your local changes to the following files would be overwritten by checkout:
web/index.html
web/js.js
Please, commit your changes or stash them before you can switch branches.
Aborting
右键单击主分支/修订版并点击merge
或rebase
无效。我做错了什么?我应该使用的“标准”工作流程是什么?
编辑:我认为我应该做的是checkout master; merge working
,但我不知道为什么我不能结账。
EDIT2:看working
分支/提交(它确实已提交,而不仅仅是暂存),我看到它在错误中抱怨的确切文件。
EDIT3:我在执行git status
时看到错误:
$ git status
web/index.html: Permission denied
web/js.js: Permission denied
# On branch working
nothing to commit, working directory clean
答案 0 :(得分:0)
错误消息的主要内容是您当前正在进行working
提交的更改,如果您将分支切换为master
,这些更改将会丢失。
如果我不想提交更改,那么我会stash代替它们。这会创建一堆变更集,我可以随时返回并应用。
如果我想提交我的更改,然后将分支合并在一起,那么这是一个非常简单(和典型)的提交,之后我可以切换到master
并执行{{1} }。
如果我确实认为我没有做出任何更改,那么我会做git merge working
,并确保没有进行任何更改。
答案 1 :(得分:-1)
我不确定发生了什么事。我有一个正在运行的Web服务器,它正在为这些文件提供服务,并在Notepad ++中打开它们。关闭Web服务器后,SourceTree中的图表会刷新,以显示正在删除的这两个文件有未提交的更改。我不确定他们为什么被删除。抛弃这些变化后,我能够结账并合并工作。