相关疑难解决方法(0)

GIT恢复最后一个分离的HEAD

请问,我的项目有一个大问题:这就是场景.我在GIT下有一个xcode项目.今天我意识到最后一次提交破坏了一些测试,所以我检查了之前的提交.我使用了SourceTree,这是警告

这样做会使您的工作副本成为"分离的HEAD",这意味着您将不再在分支机构上.如果您想在此之后提交,则可能需要再次签出分支,或者创建新分支.这个可以吗?

我工作了一整天,最后我做了一切.所以我需要将我的工作合并到开发分支上,这样我就可以查看开发分支......我的工作立即消失了:(

我知道分离我的HEAD是错误的,Sourcetree警告我......但是有一种方法可以恢复我的工作吗?

非常感谢.

git

64
推荐指数
4
解决办法
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万
查看次数

如何将大师移到HEAD?

* [971f835] (HEAD, original_idea) Now working here. Some comment 9
* [692b673] Some comment 8
* [3ebff62] Reverted to original idea. Some comment 7
| * [72ea01d] (master) Decided it wasn't worth the effort. Some comment 6
| * [985c1ad] Some comment 5
| * [4d7d491] Some comment 4
| * [0c697bb] Branched to try an idea. Some comment 3
|/
* [7280b1f] Some comment 2
* [5c2c6d0] Some comment 1
* [bc7aac6] Initial commit
Run Code Online (Sandbox Code Playgroud)

所以,master落后了.不确定是怎么回事.一旦我确定我完成了没有工作的分支,我检查[7280b1f]并继续从那里. …

git

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

如何将带有分离HEAD的子模块附加到实际的HEAD?

当我将Git子模块添加到这样的Git存储库时,

git submodule add ssh://server/proj1/ proj1
git submodule init
git submodule update
Run Code Online (Sandbox Code Playgroud)

添加的子模块将处于分离的HEAD模式.我不知道那是什么,但我知道子模块将链接到目标存储库的特定修订版.

我不知道它是如何工作的,无论如何它看起来像是一个代理分支.我通过切换到master分支解决了这个问题.

cd proj1
git checkout master
Run Code Online (Sandbox Code Playgroud)

这将切换当前分支实际主HEAD,但这不会更新链接.因此,如果再次克隆整个存储库,它仍将链接到旧版本.

如果我想让它始终与最新版本(HEAD)相关联,我该怎么办?

git git-submodules

25
推荐指数
1
解决办法
2万
查看次数

如何从'分离头状态'中恢复提交?

我检查了另一个更新的分支,然后进行了一些更改,切换回主git,现在更改消失了!我能把它们还给他们吗?终端基本上是:

$ git commit
[detached HEAD 7c09e17] Fixed some stuff
  files changed, insertions(+), deletions(-)
$ git push master
fatal: 'master' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
$ git checkout master
Previous HEAD position was 7c09e17... Fixed some stuff
Switched to branch 'master'
$ git merge theother/directory
Run Code Online (Sandbox Code Playgroud)

git merge

21
推荐指数
2
解决办法
8785
查看次数

不能推送到github:一切都是最新的

在github上,我分叉了另一个项目的旧版本.我做了一些更改,并试图将它们推到github上的fork上.我在本地提交了更改,然后尝试了git push,但这只是告诉我"Everything up-to-date".当我在github上浏览项目时,没有任何改变:它仍然显示我的fork上的文件(来自最新版本),未经修改.如何将更改推送到我的github帐户?

(我意识到这不是太多信息......我还能说什么呢?我有一种感觉,这可能是因为我正在直接修改(home)/ git /(project)中的文件......?)

git github git-push

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

git checkout my_branch vs. git checkout origin/my_branch

我是branch1当我结帐branch2这样的(这两个分支的存在).

git checkout origin/branch2

然后我得到一个超然的头错误:

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
Run Code Online (Sandbox Code Playgroud)

但后来我只是结帐branch2(没有origin)然后它工作正常:

git checkout branch2

那么git checkout有没有什么区别origin/; 以及detached HEAD使用时出现错误的原因origin/

git

19
推荐指数
1
解决办法
8383
查看次数

使用Hudson + Git + Maven Release Plugin无法自动发布

正如标题所说,我正在努力获得一个在Hudson上工作的自动发布工作.这是一个Maven项目,所有代码都在Git中.手动,我在我的个人机器上发布如下:

git checkout master
mvn -B release:prepare release:perform
Run Code Online (Sandbox Code Playgroud)

这非常有效.Maven发布插件正确地将发布标记推送到原始存储库以及将版本压缩到下一个SNAPSHOT的下一个提交.

但是,当我通过Hudson运行这个相同的Maven工作时(通过创建我自己的"发布"工作或使用M2 Release Plugin)它不能很好地工作.release标记被推送到原始存储库,并且该版本被推送到我们的Nexus存储库,但是随后的提交将版本压缩到下一个SNAPSHOT并不会消失.此外,原始存储库中的"主"分支根本不会更改.不过,我已经查看了Hudson的工作区,并且版本已经更新.

在查看Hudson作业的输出后,看起来Git插件实际上并没有签出"master",而是它的SHA1 id.也就是说,如果"master"分支标签指向提交"f6af76f541f1a1719e9835cdb46a183095af6861",Hudson会

git checkout -f f6af76f541f1a1719e9835cdb46a183095af6861
Run Code Online (Sandbox Code Playgroud)

代替

git checkout -f master
Run Code Online (Sandbox Code Playgroud)

因此,Maven发布插件所做的更改实际上并不在任何分支上(当然不在"master"上),并且这些更改不会进入原始存储库.它运行在正确的代码上,但记账明智,变化似乎迷失了,因为没有分支标签指向它们.

有没有人得到Hudson + Git + Maven Release Plugin组合才能正常工作?我可以设置一些额外的配置来实现这一目标吗?或者这是Hudson Git插件中的错误?

提前致谢.

git maven-2 hudson

13
推荐指数
2
解决办法
8464
查看次数

为什么Git不将分支名称存储为提交的一部分?

请注意:我不是要重新启动Mercurial或Git更好的论点,我只是有一个技术问题,我作为Mercurial用户,不明白.我也不确定SO是否是提出这样一个问题的正确位置,但它编程相关.

关于两个版本控制系统Git和Mercurial如何从用户的角度来看彼此不同(例如Mercurial和Git之间有什么区别?http://felipec.wordpress.com/2011/01)/16/mercurial-vs-git-its-all-in-the-branches /),主要区别在于分支机构的处理.我已经阅读了很多这些讨论,但我一直在问自己这个问题:

为什么Git不将分支名称存储为提交的一部分?

我真的没有理由不这样做; 这意味着数据不能简单地消失,因为没有参考(标记,分支,等等).

我认为在提交中存储分支是Mercurial的一大优点,因为这会使丢失数据变得更加困难.

Git人群的主要观点是支持Git的分支模型,你可以简单地删除分支,并不会阻止Git在每次提交时存储分支的名称:如果删除了分支的提交,那么对该分支的引用.它也不会干扰"廉价分支"的论点:分支管理起来不会更昂贵.我不认为所需的额外存储应该是值得关注的:每次提交只需几个字节.

git mercurial branch git-branch

11
推荐指数
2
解决办法
1115
查看次数

Git脱离头部问题

我读过今天与此相关的问题,很多职位(一个有用的一个位置:修复一个Git分离的头? - 为什么我的Git回购进入一个分离的头状态?).

今天我一直在挠头.在阅读这些文章之后,我无法理解如何解决这个问题.

昨天一切都好,我记得已经给出了结账命令.晚上我发现Git没有显示任何变化,即使存在局部变化.在今天研究之后,我现在可以看到git状态显示"HEAD与99f040f分离".

从那时起,我删除了我的D :(在我的Windows 7上)的.git文件夹,并恢复了7月27日备份的.git.还是没有解决.我也尝试了7月25日的版本.但没有运气.所以我现在恢复了昨天的.git版本.

我正在粘贴gitk的截图.我能做些什么来纠正这个问题吗? 在此输入图像描述

git

9
推荐指数
1
解决办法
7550
查看次数