相关疑难解决方法(0)

git reset --mixed, - soft和--hard有什么区别?

我希望拆分提交,不知道要使用哪个重置选项.

我在看页面你能解释一下"git reset"用简单的英语做什么吗?,但我意识到我并不真正理解git索引或临时区域是什么,因此解释没有帮助.

此答案中的用例--mixed--soft看起来一样(当你想要修复和重新发送时.)有人可以将其分解吗?我意识到--mixed可能是选择,但我想知道为什么.最后,怎么样--hard

有人能给我一个如何选择3个选项的工作流程示例吗?

git version-control

691
推荐指数
12
解决办法
17万
查看次数

"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 repo进入了独立的HEAD状态?

我今天最终得到了一个独立的头,同样的问题如下所述:git push说一切都是最新的,即使我有本地更改

据我所知,我没有做任何与众不同的事情,只是从我当地的回购中提交和推送.

那我怎么最终得到一个detached HEAD

git

365
推荐指数
7
解决办法
20万
查看次数

GIT中的HEAD和ORIG_HEAD

这些符号是指什么,它们是什么意思?

(我在官方文档中找不到任何解释)

git

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

git中的HEAD是什么?

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

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

git head

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

git:"branchname"和"refs/head/branchname"之间的区别

最好在一个例子中解释:我在存储库的分支0.58上,这是我的拉取方式:

git pull origin 0.58
Run Code Online (Sandbox Code Playgroud)

当我打电话给"git pull"时,我得到:

ip238:openlierox az$ git pull
You asked me to pull without telling me which branch you
want to merge with, and 'branch.0.58.merge' in
your configuration file does not tell me either.  Please
name which branch you want to merge on the command line and
try again (e.g. 'git pull <repository> <refspec>').
See git-pull(1) for details on the refspec.

If you often merge with the same branch, you may want to
configure the following variables …
Run Code Online (Sandbox Code Playgroud)

git

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

Git分支命名为origin/HEAD - > origin/master

我对Git很新,但仍然掌握它.我刚刚开始与分支机构合作,并遇到了一些问题.

我有两个开发系统,一个是Ubuntu桌面和一个MacBookPro.我organizations在Ubuntu系统的一个新分支上做了很多工作,并执行了提交并推送到我的远程仓库.在这一点上,我有这些分支:

tauren@ubuntu:/projects$ git branch
  accounting
  master
* organizations

tauren@ubuntu:/projects$ git branch -r
  origin/accounting
  origin/master
  origin/organizations
  origin/superstar
Run Code Online (Sandbox Code Playgroud)

然后我切换到MBP拉新分支:

tauren@osx:/projects$ git branch
  accounting
* master

tauren@osx:/projects$ git branch -r
  origin/HEAD -> origin/master
  origin/accounting
  origin/master
  origin/superstar

tauren@osx:/projects$ git pull
   2e20a14..ef35730  accounting -> origin/accounting
   271a1a5..7e947ab  master     -> origin/master
 * [new branch]      organizations -> origin/organizations

tauren@osx:/projects$ git branch
* accounting
  master

tauren@osx:/projects$ git branch -r
  origin/HEAD -> origin/master
  origin/accounting
  origin/master
  origin/organizations
  origin/superstar
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:

  1. 为什么MBP有一个分支origin/HEAD -> origin/master,但Ubuntu系统没有?那个分支是什么?
  2. 是否会git pull自动拉出所有新的远程分支?我以为我必须告诉它要拉的新分支的名称.如您所见,它在命令上拉出了远程 …

git

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

Git中的"at"@符号/符号/字符是什么意思?

at-sign @通常在git中用于以不同方式指定修订.例如,

  1. <ref>@{<date>}指定其状态的引用<date>.

    示例:git diff master@{yesterday} master.

  2. <ref>@{<n>}特定于第n 先前状态的参考.

    示例:git diff master@{1} master.

  3. @{-<n>}指定当前之前检出的第n 分支.

    示例:git checkout @{-5}.

  4. <ref>@{upstream} 指定引用的上游分支.

    示例:git diff master@{upstream} master.

但是,@它也在git命令中以其他方式使用,例如

git rebase -i @~4
git log @^^..@
Run Code Online (Sandbox Code Playgroud)

@在这些例子中,at-sign 意味着什么?

git

37
推荐指数
1
解决办法
5710
查看次数

"分支"究竟是什么意思?

长话短说...

据我所知,术语"分支"(用Git的说法)可能指的是相关但不同的东西:

  1. 提交的非符号引用/指针,
  2. 这种参考的名称(例如"主人"),
  3. 存储库的提交DAG的子图由这样的引用所指向的提交中可到达的所有提交组成.

但是,我已经看到这个术语过去常常是指三种可能的用法以外的东西(下面有更多细节).在Git上下文中,我的列表中缺少的"分支"一词是否还有其他有效和明确的用法?

更多细节

使用Git大约一年后,我正在为CS学生准备一个简短的教程.我真的想要确定Git术语,以避免任何混淆.

当然,我现在已经使用Git分支了一段时间; 我很习惯使用它们并且发现Git分支模型很棒.但是,我仍然发现术语"分支"有问题且含糊不清,因为它似乎至少引用了两个不同的东西,具体取决于它所使用的上下文...有时甚至在同一个教程/手册中.

用法1:branch =指向提交的指针/引用

Pro Git书(3.1中 - 分支是什么),在显示下图后,

在此输入图像描述

继续将分支定义为

只是一个指向其中一个提交的轻量级可移动指针.

据我所知,这也是Git手册页中"分支"的含义.

我对这个定义非常满意.我认为分支只是指向DAG中特定提交的引用,而分支的"提示提交"是该引用指向的提交.到现在为止还挺好.可是等等...

用法2:branch = DAG的子图

Atlassian的Git的教程介绍分支如下:

分支代表独立的发展路线.

我猜他们的意思是一串提交.让我改进一下这个想法......唯一对我有意义的解释是术语"分支"也可以指存储库的提交DAG子图,该提交DAG由所考虑的提示提交可到达的所有提交组成.

但是,Pro Git书籍也包含以下图表(参见3.4 - 分支工作流程),

在此输入图像描述

这似乎与我的解释相矛盾,因为它似乎暗示只有提交C2- C5(不C1)属于develop分支,并且只提交C6- C7(不是C1- C5)属于topic分支.

我发现这种用法含糊不清,因为如果我在那个阶段绘制DAG,而不知道分支引用在过去指向的位置,并且没有任何假设三个分支之间的任何层次结构,我会得到的是

在此输入图像描述

我还发现其他Git学习资源中的一些图表令人困惑.特别考虑以下内容(取自Lynda.com的介绍视频- Git Essential Training):

在此输入图像描述

这里,尖端master实际 534de(和HEAD指向master),但图中的"主"标签的位置是非常误导.在这种情况下,该标签应该描述的是我不清楚的......

编辑:我已经 …

git branch terminology

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

还原到本地提交?

我从我的仓库中删除了代码,这些代码已经搞砸了.我想将整个项目还原到我上次的本地提交.我该怎么做?

git

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