相关疑难解决方法(0)

'git pull'和'git fetch'有什么区别?

主持人注意:鉴于此问题已经发布了67个答案(其中一些已删除),请考虑在发布另一个问题之前是否提供任何新内容.

git pull和之间有什么区别git fetch

git version-control git-pull git-fetch

1万
推荐指数
41
解决办法
269万
查看次数

如何将分离的HEAD与master/origin协调?

我是Git分支复杂的新手.我总是在一个分支上工作并提交更改,然后定期推送到我的远程源.

在最近的某个地方,我重置了一些文件以使它们脱离提交暂存,后来又做了一个rebase -i去除几个最近的本地提交.现在我处于一种我不太了解的状态.

在我的工作区域,git log显示我所期待的 - 我在正确的火车上,我不想要的提交,以及那些新的,等等.

但是我只是推送到远程存储库,并且有什么不同 - 我在rebase中杀死的一些提交被推送,而本地提交的新提交不存在.

我认为"master/origin"与HEAD分离,但我不是100%清楚这意味着什么,如何使用命令行工具将其可视化,以及如何修复它.

git

1506
推荐指数
15
解决办法
91万
查看次数

修复一个Git分离的头?

我在我的存储库中做了一些工作,发现文件有本地更改.我不再想要它们所以我删除了文件,以为我可以签出一份新的副本.我想做Git相当于

svn up .
Run Code Online (Sandbox Code Playgroud)

使用git pull似乎没有用.一些随机搜索引导我到一个有人推荐做的网站

git checkout HEAD^ src/
Run Code Online (Sandbox Code Playgroud)

(src是包含已删除文件的目录).

现在我发现我有一个超然的头.我不知道那是什么.我怎么撤消?

git

1318
推荐指数
19
解决办法
128万
查看次数

你如何重命名Git标签?

今天我正在浏览一个项目的日志,并意识到我不久前发了一个标签名称.有没有办法重命名标签?谷歌没有发现任何有用的东西.

我意识到我可以查看标记版本并制作新标签,我甚至尝试过.但这似乎创建了一个不太正确的标签对象.一个,

git tag -l
Run Code Online (Sandbox Code Playgroud)

相对于所有其他标签,它不按顺序列出.我不知道这是否重要,但它让我相信新标签对象不是我想要的.我可以忍受,因为我真的只关心标签名称与文档匹配,但我宁愿"正确",假设有正确的方法来做到这一点.

git git-tag

1162
推荐指数
9
解决办法
24万
查看次数

Git中的HEAD是什么?

你看到Git文档说的话

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

但究竟Git HEAD究竟是什么?

git

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

添加Git子模块时如何指定分支/标记?

git submodule add -b工作怎么样?

添加具有特定分支的子模块后,新的克隆存储库(之后git submodule update --init)将处于特定提交,而不是分支本身(git status在子模块上显示"当前不在任何分支上").

我无法找到任何信息.gitmodules.git/config关于子模块的分支或任何具体的承诺,那么,如何Git的数字出来?

此外,是否可以指定标签而不是分支?

我正在使用1.6.5.2版.

git git-submodules

698
推荐指数
10
解决办法
46万
查看次数

为什么git默认执行快进合并?

来自mercurial,我使用分支来组织功能.当然,我也想在我的历史中看到这种工作流程.

我使用git开始了我的新项目并完成了我的第一个功能.合并该功能时,我意识到git使用快进,即如果可能,它会将我的更改直接应用到主分支并忘记我的分支.

因此,思考未来:我是唯一一个从事这个项目的人.如果我使用git的默认方法(快进合并),我的历史将导致一个巨大的主分支.没有人知道我为每个功能使用了一个单独的分支,因为最后我只有那个巨大的主分支.这看起来不专业吗?

通过这种推理,我不想要快进合并,也不知道为什么它是默认的.这有什么好处的?

git git-merge fast-forward git-branch

637
推荐指数
2
解决办法
15万
查看次数

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

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

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


编辑

我找到了这个

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

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

git version-control

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

"git reset"和"git checkout"有什么区别?

我一直在想,git reset并且git checkout同样地,在这个意义上,两者都将项目带回特定的提交.但是,我觉得它们不可能完全相同,因为这将是多余的.这两者之间的实际差异是什么?我有点困惑,因为svn只svn co需要恢复提交.

添加

下面的图解释了差别,尽管在一个或者可能过于简化的或不正确的方式进行.你怎么看?是错误还是过度简化?

http://a.imageshack.us/img192/5440/screenshot20100903at416.png

增加2

VonC和Charles解释了两者之间的差异,git reset并且git checkout非常好.我目前的理解是git reset将所有更改还原为特定提交,而git checkout更多或更少的准备分支.我发现以下两个图对于理解这些图非常有用:

http://a.imageshack.us/img651/1559/86421927.png http://a.imageshack.us/img801/1986/resetr.png

增加3

http://think-like-a-git.net/sections/rebase-from-the-ground-up/using-git-cherry-pick-to-simulate-git-rebase.html,checkout和reset可以模拟反叛.

在此输入图像描述

git checkout bar 
git reset --hard newbar 
git branch -d newbar 
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

git git-checkout git-reset

415
推荐指数
5
解决办法
11万
查看次数

如何从远程分支永久删除一些提交

我知道这是重写历史,这是糟糕的亚达亚达.

但是如何从远程分支中永久删除一些提交?

git

412
推荐指数
9
解决办法
29万
查看次数