相关疑难解决方法(0)

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

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

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

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

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

git version-control

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

在Git中压缩前两个提交?

随着git rebase --interactive <commit>你能够压制任意数量的提交连成一个单一的一个.

除非你想将提交压缩到初始提交中,否则这一切都很棒.这似乎是不可能的.

有没有办法实现它?


中度相关:

在一个相关的问题中,我设法提出了一种不同的方法来解决第一次提交的问题,这也就是说,它是第二次提交.

如果您有兴趣:git:如何插入提交作为第一个,转移所有其他?

git rebase git-rebase squash

529
推荐指数
5
解决办法
15万
查看次数

"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:在裸存储库中更改Active Branch的正确方法?

我有一个裸存储库,用作我项目的中央存储.所有开发人员都git clone <repo>愿意与之分享.当他们进行克隆时,他们会检查主分支(除非他们这样做git clone -n)因为repo.git/HEAD包含ref: refs/heads/master,使其成为活动分支.

问题是,如何正确更改活动分支?我可以简单地直接破解repo.git/HEAD文件,但这看起来很讨厌,而且,哈哈.

我尝试git checkout <otherbranch>在repo .git目录中做,但是因为我不在工作树中而失败了.

我试过git update-ref HEAD refs/heads/otherbranch但是刚刚更新的refs/heads/master与refs/heads/otherbranch相同(好吧,我在虚拟存储库中做了那个,而不是我的生产!)

我试过git update-ref --no-deref HEAD refs/heads/otherbranch,这几乎奏效了.它更新了HEAD文件,但它将其设置为指向的提交的SHA1 refs/heads/otherbranch.

我正在使用git版本进行测试1.7.0.2.msysgit.0.

我猜测没有办法做到这一点git push,因为允许所有和各种更改你的默认分支似乎有点不安全(!),但肯定有一个更好的方法在repo .git目录中执行它比直接黑客HEAD文件.

git

185
推荐指数
2
解决办法
5万
查看次数

我怎样才能在git裸存储库中取消提交最后一次提交?

考虑到有几个git命令在裸存储库中没有意义(因为裸存储库不使用索引而没有工作目录),

git reset --hard HEAD^ 
Run Code Online (Sandbox Code Playgroud)

不是解除对此类存储库中的最后一次更改的解除.

搜索通过互联网,所有我能找到相关的话题就是这个,在我提出这样做的方式有三种:
1."手动更新裁判(其中涉及水暖)";
2." git push -f来自非裸库";
3." git branch -f this $that".

您认为哪种解决方案更合适,或者有哪些方法可以做到这一点?不幸的是,我发现的关于git bare存储库的文档相当差.

git commit repository reset git-bare

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

重置Git以在不将HEAD更改为分离状态的情况下提交

我想将git工作副本的文件恢复到给定的提交,而不将该提交设置为HEAD提交.

如果我git checkout到给定的提交,我获得一个分离的HEAD,并在提交更改后,提交树看起来像这样:

A
|
B
|
C  
| \
D  E
Run Code Online (Sandbox Code Playgroud)

虽然我想获得的行为是:

A
|
B
|
C
|
D
| <- git command so my files are restored to C, but my HEAD still points to D
E
Run Code Online (Sandbox Code Playgroud)

谢谢

git

16
推荐指数
3
解决办法
2534
查看次数

在sourcetree中压缩两次以上的提交?

我有大量的提交,大约20个,自从我上次推出origin/master以来我已经完成了.我从来没有过多个分支,主,所有提交都是在master上完成的.如何将所有20个提交压缩到一个提交中,最好使用sourcetree?我想这样做,所以我可以将一个提交推送到origin/master.

在sourcetree中,我已经想到在存储库菜单中使用交互式rebase命令.它会显示我想要压缩的确切提交列表.我尝试反复按下壁球按钮,直到它显示一个包含所有这些按钮的提交.但是当我点击OK时,我最终只得到两个最近提交的提交.因此,即使对话框似乎表明它可以在实践中压缩多个,但我无法让它工作.

git squash atlassian-sourcetree

15
推荐指数
1
解决办法
7303
查看次数

git-reset的--merge和--keep标志的典型用例是什么?

最近的回答中,他详细介绍的典型应用案例git-reset的三个最常用的选项(--hard,--mixed,和--soft),托雷克顺便提到的是git-reset还提供了两个比较深奥的标志,被称为--merge--keep.该git-reset手册页描述了如下的两个标志:

--merge

   Resets the index and updates the files in the working tree
   that are different between <commit> and HEAD, but keeps
   those which are different between the index and working tree
   (i.e. which have changes which have not been added). If a
   file that is different between <commit> and the index has
   unstaged changes, reset is aborted.

   In …
Run Code Online (Sandbox Code Playgroud)

git git-reset

15
推荐指数
1
解决办法
970
查看次数

Git:根据pull请求中的新目录将pull pull请求拆分为较小的PR

我有一个功能分支的巨石.而不是一个大规模的PR成为主人,我想把它分成3个小时.

理想情况下,我想将功能分支中的一些独立代码单独提取到PR中.此代码位于新目录中,尚未调用,因此它将是一个相对安全的PR.但是,我不想仅复制目录并创建单个提交和PR,而是希望保留新PR的更改的所有提交历史记录.

这可能使用Git吗?我已经研究了filter-branch,但似乎是将repo拆分为两个,而不是将更改的diff分成两个(如果这是有道理的).

git github git-filter-branch

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

确定章鱼合并期间冲突中的哪些分支

我们正在尝试使用git octopus合并来构建一个流程来整合常规版本的许多主题分支.当发生冲突时,似乎没有输出哪些分支发生冲突.在章鱼合并之后,有没有人知道确定冲突来自哪些分支的方法?

谢谢,-Kal

git version-control merge process release-management

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