相关疑难解决方法(0)

使用Git将我的最后一次X提交压缩在一起

如何使用Git将我最后的X提交压缩成一个提交?

git squash git-squash

3294
推荐指数
38
解决办法
147万
查看次数

如何将所有git提交压缩成一个?

你如何将整个存储库压缩到第一次提交?

我可以重新设置第一次提交,但这会让我有2次提交.有没有办法在第一个之前引用提交?

git rebase git-rebase squash git-rewrite-history

427
推荐指数
17
解决办法
20万
查看次数

在Git中编辑root提交?

有办法从以后的提交中更改消息:

git commit --amend                    # for the most recent commit
git rebase --interactive master~2     # but requires *parent*
Run Code Online (Sandbox Code Playgroud)

如何更改第一次提交(没有父级)的提交消息?

git git-rebase git-amend git-commit git-rewrite-history

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

在Git中提交根提交之前插入一个提交?

我之前已经问过如何在git存储库中压缩前两个提交.

虽然这些解决方案非常有趣,而且并不像git中的其他一些东西那样令人惊讶,但如果你需要在项目开发过程中多次重复这个过程,它们仍然是一个众所周知的伤害.

所以,我宁愿只经历一次痛苦,然后能够永远使用标准的交互式rebase.

那么,我想做的是拥有一个空的初始提交,仅仅是为了成为第一个提交.没有代码,没有任何东西.只是占用空间,因此它可以作为rebase的基础.

我的问题是,拥有一个现有的存储库,如何在第一个存储库之前插入一个新的空提交,并将其他所有人转移?

git version-control rebase git-rebase

210
推荐指数
7
解决办法
5万
查看次数

结合Git存储库的前两个提交?

假设您有一个包含三个提交A,BC的历史记录:

A-B-C
Run Code Online (Sandbox Code Playgroud)

我想将两个提交AB组合到一个提交AB:

AB-C
Run Code Online (Sandbox Code Playgroud)

我试过了

git rebase -i A
Run Code Online (Sandbox Code Playgroud)

这打开了我的编辑器,其中包含以下内容:

pick e97a17b B
pick asd314f C
Run Code Online (Sandbox Code Playgroud)

我改成这个

squash e97a17b B
pick asd314f C
Run Code Online (Sandbox Code Playgroud)

然后Git 1.6.0.4说:

Cannot 'squash' without a previous commit
Run Code Online (Sandbox Code Playgroud)

有办法还是不可能?

git rebase git-rebase git-rewrite-history

194
推荐指数
5
解决办法
4万
查看次数

git reset --soft的实际用途?

我一直在用git工作一个多月.事实上我昨天才第一次使用复位,但软复位对我来说仍然没有多大意义.

据我所知,我可以使用软重置编辑提交而不改变索引或工作目录git commit --amend.

这两个命令是否真的相同(reset --softvs commit --amend)?有任何理由在实际中使用其中一个吗?更重要的是,reset --soft除了修改提交之外还有其他用途吗?

git

117
推荐指数
8
解决办法
17万
查看次数

git的半秘密空树对象是否可靠,为什么没有符号名称呢?

Git有一个众所周知的,或者至少是众所周知的空树,其SHA1是:

4b825dc642cb6eb9a060e54bf8d69288fbee4904
Run Code Online (Sandbox Code Playgroud)

(你可以在任何仓库中看到这个,甚至是新创建的仓库,用git cat-file -tgit cat-file -p).

如果您努力工作并且非常小心,您可以使用这个空树来存储没有文件的目录(请参阅如何将空目录添加到git存储库的答案),尽管这不是一个好主意.

它作为一个参数更有用git diff-tree,其中一个示例钩子可以做到.

我想知道的是,

  1. 这有多可靠 - 即,某些未来版本的git没有编号的git对象4b825dc642cb6eb9a060e54bf8d69288fbee4904
  2. 为什么空树没有符号名称(或者有一个?).

(创建符号名称的快速而肮脏的方法是将SHA1放入,例如,.git/Nulltree不幸的是,您必须为每个repo执行此操作.似乎更好地将幻数放在脚本中等等.我只是有一般的厌恶到魔术数字.)

git

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

git push --force-with-lease vs. --force

我试图了解它们之间的区别

git push -f
Run Code Online (Sandbox Code Playgroud)

git push --force-with-lease
Run Code Online (Sandbox Code Playgroud)

我的猜测是,如果遥控器没有本地分支没有的提交,后者只会推送到遥控

如果有更好的方式来表达问题,lmk,但希望它很清楚.

git git-push

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

Git:"不能'压扁'没有先前的提交"错误,而rebase

我在待办事项中有以下内容git rebase -i HEAD~2:

pick 56bcce7 Closes #2774
pick e43ceba Lint.py: Replace deprecated link

# Rebase 684f917..e43ceba onto 684f917 (2 command(s))
#
...
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试压缩第一个(56bcce7)并通过在第一个之前添加"s"来选择第二个时,我得到以下错误:

Cannot 'squash' without a previous commit
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下它的含义,我该怎么做?

我想压缩第一个commit(56bcce7)和"select and reword"第二个(e43ceba)提交

git rebase

67
推荐指数
5
解决办法
6万
查看次数

我怎样才能找出谁强行推入git?

有人用,git push --force但我不知道是谁从日志中做到了.有没有办法找出罪魁祸首?

git

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

如何删除github gist的特定修订版?

我在GitHub上创建了一个Gist,我看到了我不希望任何人看到的信息.我从那时起更新了文件,但每个人仍然可以访问该文件的旧版本.

除了删除Gist之外,有没有办法明确删除该特定修订版?

我看到我不是唯一一个有这种问题的人(Git:删除一个远程修订版),但我没有设法删除修订版.此处指示的过程似乎有助于删除一些文件.我想删除整个修订版.

git revision gist github

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

Git:在本地rebase之后重复提交,然后拉

背景:

我有一个功能分支A,它是我的开发分支之前的一个提交:

3   (develop, origin/develop)
| 2 (A, origin/A) some feature branch commit
|/
1   some commit
Run Code Online (Sandbox Code Playgroud)

然后我在开发(git checkout A,git rebase develop)上重新定义A ,所以我得到:

2'  (A) some feature branch commit
|
3   (develop, origin/develop)
| 2 (origin/A) some feature branch commit
|/
1   some commit
Run Code Online (Sandbox Code Playgroud)

现在我再也无法推动A,origin因为Git将拒绝非快进提交.它告诉我先拉远程更改.

当我这样做然后推,我最终得到以下历史:

4   (A, origin/A) merged origin/A into A
|\
2'| some feature branch commit
| |
3 | (develop, origin/develop)
| 2 (origin/A) some feature branch commit …
Run Code Online (Sandbox Code Playgroud)

git

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

Git:压缩不是最近提交的连续提交,而不是从根开始

我已经回顾了几个关于压缩最新提交压缩根提交的相关问题,但这两个问题都不能帮助我压缩不是根本的非最近提交.

这是我的开始场景:

D---E---F---G---H---I---J master
Run Code Online (Sandbox Code Playgroud)

和我想要的结果:

D---E---Z---I---J master
Run Code Online (Sandbox Code Playgroud)

什么Z是壁球F---G---H,和F---G---H,D---E和,I---J可以是任意长的非分支提交序列.

第一种方法:

[lucas]/home/blah/$ git rebase -i D
rebase in progress; onto D
You are currently editing a commit while rebasing branch 'master' on 'D'.

No changes
You asked to amend the most recent commit, but doing so would make
it empty. You can repeat your command with --allow-empty, or you can
remove the commit entirely with "git reset HEAD^". …
Run Code Online (Sandbox Code Playgroud)

git version-control squash jgit

5
推荐指数
1
解决办法
1689
查看次数