相关疑难解决方法(0)

如何在提交前撤消'git add'?

我错误地使用命令将文件添加到git:

git add myfile.txt
Run Code Online (Sandbox Code Playgroud)

我还没跑git commit.有没有办法撤消这个,所以这些文件不会包含在提交中?


到目前为止有48个答案(有些已删除).除非您有一些新信息,否则请不要添加新的.

git version-control git-commit git-stage

8567
推荐指数
38
解决办法
285万
查看次数

Git中的HEAD是什么?

你看到Git文档说的话

分支必须在HEAD中完全合并.

但究竟Git HEAD究竟是什么?

git

956
推荐指数
14
解决办法
42万
查看次数

在Git中,HEAD,工作树和索引之间有什么区别?

有人能告诉我在Git中HEAD,工作树和索引之间的区别吗?

据我所知,它们都是不同分支的名称.我的假设是否正确?


编辑

我找到了这个

单个git存储库可以跟踪任意数量的分支,但是您的工作树只与其中一个分支相关联("当前"或"已检出"分支),HEAD指向该分支.

这是否意味着HEAD和工作树总是一样的?

git version-control

453
推荐指数
5
解决办法
13万
查看次数

我如何拆分历史上埋藏的Git提交?

我记录了我的历史,并希望对它做一些改变.问题是,我提交了两个不相关的更改,并且此提交被我的本地(非推送)历史记录中的一些其他更改所包围.

我想在推送之前拆分此提交,但我看到的大多数指南都与拆分最近的提交或未提交的本地更改有关.是否可以对历史记录中的提交执行此操作,而不必从那时起"重新执行"我的提交?

git split commit revision-history

289
推荐指数
2
解决办法
4万
查看次数

git子模块更新

我不清楚以下是什么意思(来自git submodule update docs):

...将使子模块HEAD分离,除非--rebase--merge指定...

怎么--rebase/ --merge改变事情?

我的主要用例是有一堆中央存储库,我将通过子模块嵌入到其他存储库中.我希望能够改进这些中央回购,直接在他们的原始位置,或从他们的嵌入回购(通过子模块使用它们的那些).

  • 从这些子模块中,我可以创建分支/修改并使用推/拉,就像我在常规回购中一样,或者有什么需要谨慎的吗?
  • 我如何将子模块引用的提交从say(tagged)1.0提升到1.1(即使原始repo的头部已经是2.0),或者选择使用哪个分支的提交?

git git-submodules

233
推荐指数
4
解决办法
23万
查看次数

如何撤消git pull?

我想撤消我的git pull因为远程源上的不需要的提交,但我不知道我必须重置为哪个版本.

在对远程原点进行git拉取之前,我怎样才能回到状态?

git pull undo

227
推荐指数
6
解决办法
23万
查看次数

git中的HEAD是什么?

最后一次提交,HEAD和我在目录中可以看到的文件状态之间似乎有区别.

什么是HEAD,我该怎么办?我应该避免哪些错误?

git head

220
推荐指数
4
解决办法
8万
查看次数

Git陷入错误的分支

我和其他开发人员一直在合并并将我们的工作推向一个名为"工具"的非主分支.这样,我们没有影响团队的其他成员.我的主题分支叫做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 branch pull undo

69
推荐指数
4
解决办法
3万
查看次数

如何知道git rebase是否正在进行中?

当我开始时git rebase -i,我可以发出像git rebase --continue或的命令git rebase --abort.这些命令仅在rebase正在进行时才有效.

我如何知道是否有正在进行的改造?

(我非常感谢关于rebase如何在内部工作的一些细节; git对一个repo做了什么,使它具有"rebase in progress"状态,?)

git git-rebase

64
推荐指数
3
解决办法
2万
查看次数

Git分支从哪里开始,它的长度是多少?

偶尔我会被问到,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 version-control git-branch

64
推荐指数
8
解决办法
1万
查看次数