我错误地使用命令将文件添加到git:
git add myfile.txt
Run Code Online (Sandbox Code Playgroud)
我还没跑git commit.有没有办法撤消这个,所以这些文件不会包含在提交中?
到目前为止有48个答案(有些已删除).除非您有一些新信息,否则请不要添加新的.
有人能告诉我在Git中HEAD,工作树和索引之间的区别吗?
据我所知,它们都是不同分支的名称.我的假设是否正确?
我找到了这个
单个git存储库可以跟踪任意数量的分支,但是您的工作树只与其中一个分支相关联("当前"或"已检出"分支),HEAD指向该分支.
这是否意味着HEAD和工作树总是一样的?
我记录了我的历史,并希望对它做一些改变.问题是,我提交了两个不相关的更改,并且此提交被我的本地(非推送)历史记录中的一些其他更改所包围.
我想在推送之前拆分此提交,但我看到的大多数指南都与拆分最近的提交或未提交的本地更改有关.是否可以对历史记录中的提交执行此操作,而不必从那时起"重新执行"我的提交?
我不清楚以下是什么意思(来自git submodule update docs):
...将使子模块HEAD分离,除非
--rebase或--merge指定...
怎么--rebase/ --merge改变事情?
我的主要用例是有一堆中央存储库,我将通过子模块嵌入到其他存储库中.我希望能够改进这些中央回购,直接在他们的原始位置,或从他们的嵌入回购(通过子模块使用它们的那些).
我想撤消我的git pull因为远程源上的不需要的提交,但我不知道我必须重置为哪个版本.
在对远程原点进行git拉取之前,我怎样才能回到状态?
最后一次提交,HEAD和我在目录中可以看到的文件状态之间似乎有区别.
什么是HEAD,我该怎么办?我应该避免哪些错误?
我和其他开发人员一直在合并并将我们的工作推向一个名为"工具"的非主分支.这样,我们没有影响团队的其他成员.我的主题分支叫做DPM-93,我的git工作流就是这个.
# do some work
git checkout DPM-93
git commit -m "did some work"
# catch up
git checkout toolwork
git pull origin toolwork
# rebase my topic branch
git checkout DPM-93
git rebase toolwork
# merge and push my changes
git checkout toolwork
git merge --no-ff DPM-93
git push origin toolwork
Run Code Online (Sandbox Code Playgroud)
在我意外发出这些git命令之前,这大部分工作正常
git checkout toolwork
git pull origin master
Run Code Online (Sandbox Code Playgroud)
那时,一堆新东西出现在分支工具中,我不知道如何摆脱它删除我的工作区并重新克隆回购.
在拉动之前有没有办法将其支持到状态?
当我开始时git rebase -i,我可以发出像git rebase --continue或的命令git rebase --abort.这些命令仅在rebase正在进行时才有效.
我如何知道是否有正在进行的改造?
(我非常感谢关于rebase如何在内部工作的一些细节; git对一个repo做了什么,使它具有"rebase in progress"状态,?)
偶尔我会被问到,git上某个分支的启动是什么,或者是否在特定分支上创建了某个提交.分支的终点非常清楚:分支标签所在的位置.但是 - 它从哪里开始?琐碎的答案是:在我们创建该分支的那个提交上.但据我所知,这些信息就是为什么我会问这个问题,在第一次提交后丢失了.
只要我们知道我们分支的提交,我们就可以绘制图表来说明:
A - B - C - - - - J [master]
\
D - E - F - G [branch-A]
\
H - - I [branch-B]
Run Code Online (Sandbox Code Playgroud)
我在提交时创建了branch-B,E这就是"开始".我知道,因为我做到了.但其他人能否以同样的方式认识到它?我们可以绘制相同的图形:
A - B - C - - - - J [master]
\
\ F - G [branch-A]
\ /
D - E
\
H - I [branch-B]
Run Code Online (Sandbox Code Playgroud)
所以,现在看图表,哪个分支开始E,哪一个在B?提交D两个分支的成员还是我们可以清楚地决定它是属于分支A还是分支B?
这听起来有点哲学,但实际上并非如此.监事有时想知道,当一个分支已经开始(它通常标志着一个任务开始)和其分支的一些变化属于(得到一些改变的目的 - 是它需要的工作),我会想知道git是否提供信息(工具,命令)或定义来正确回答这些问题.
git ×10
pull ×2
undo ×2
branch ×1
commit ×1
git-branch ×1
git-commit ×1
git-rebase ×1
git-stage ×1
head ×1
split ×1