相关疑难解决方法(0)

在Git中压缩前两个提交?

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

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

有没有办法实现它?


中度相关:

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

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

git rebase git-rebase squash

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

在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存储库的前两个提交?

假设您有一个包含三个提交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存储库中定义一个新的"root"分支."root"分支是指完全独立于存储库1中所有其他分支的分支.

不幸的是,甚至在Arepo的提交树的基础上提交(让我们称之为)包含很多文件(这是一个在已经相当成熟的项目上初始化的存储库).

这意味着即使我A作为新分支提供<start-point>,这个新分支也不会从"干净的平板"开始,而是包含所有提交的文件A.

有没有什么方法可以在这个存储库中创建一个完全裸的分支,<start-point>尽可能接近A


1 BTW,这等于创建一个新的回购.由于很多原因,单独的回购将不太方便.


编辑:好的,这是我做的,基于vcsjones的回答:

# save rev of the current earliest commit
OLDBASE=$(git rev-list --max-parents=0 HEAD)

# create a new orphan branch and switch to it
git checkout --orphan newbranch
# make sure it's empty
git rm -rf .

# create a new empty commit in the new branch, and
# save its rev in NEWBASE
git commit …
Run Code Online (Sandbox Code Playgroud)

git

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

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中创建没有父项的提交?

可能重复:
在git中,有一种简单的方法可以将不相关的分支引入存储库吗?

我有一个小项目,我工作,没有任何形式的版本控制软件,和我结束了三个不同版本的同一个脚本,在那里每个人做了从别人略有不同.我用其中一个版本初始化了一个git repo,我真的很愿意在没有父母的情况下让其他两个版本中的每个版本.这样,我可以合并差异,就好像脚本的三个版本中的每一个都是不同分支的提示一样.

我甚至不能确定这是否是一定要着手解决这个问题,一个理智的或合理的方式......如何在一个更好的方式来处理这种情况这样做事,或者建议任何意见,将不胜感激.

git

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

git:在文件中更改一行以获取完整的历史记录

当我开始我的git repo时,我提交了一些文件作为初始提交.现在,很多提交后来,我注意到我在这些文件中包含了一条信息,其中包含我不想发布的信息(与其他代码不同).所以我想删除/更改这一行保留其余的代码.

在我周围搜索我找到了这个解决方案:插入一个空提交作为初始提交(这里描述:在Git中根提交之前插入一个提交?),对它做一个rebase,然后通过修改编辑旧的第一次提交.不幸的是,在rebase期间出现了许多残酷的合并冲突(如下所述:git:解决由rebase引起的冲突).

有没有不同的方法来解决我的问题,或者必须手动变基和编辑所有冲突?

提前致谢 :)

git commit git-amend

38
推荐指数
3
解决办法
8194
查看次数

Github创建空分支

我在互联网上搜索了几个小时,找不到解决这个问题的方法:

我想创建一个GitHub名为的新分支release.这个分支需要是空的!但是有一个现有的分支与x提交,我不想拥有它commit history.

我找到的唯一方法是创建一个本地 --orphan分支


提前致谢 ;)

git github

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

在Heroku上清理git repo

情况如下:

我们有一些项目坚持Github,并将其部署到Heroku,后者有自己的mini-Git.一些更改直接应用于Heroku(来自Heroku的克隆存储库,进行了更改并推送).与此同时,Github上的主分支也获得了一些变化.

现在,当我想将主存储库推送到Heroku时,推送失败,因为Heroku上的提交与本地提交不同步.

我不想与Heroku的变化合并 - 我只是希望它们消失.

有没有办法清理Heroku上的git仓库,从一开始就推送我的本地仓库?

我不想破坏应用程序并重新创建它,因为它有一些付费服务,我只是一个合作者.

git repository heroku reset

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

在Git中提交根提交之前添加提交?

新问题

两个问题:

  1. 我试图在所有提交之前提交一个提交.
    最底层的提交有660fb2a76211f36ec9a67d0454a90eab469e9fd0SHA.当我输入git rebase -i 660fb2a76211f36ec9a67d0454a90eab469e9fd0每个提交但最后一个提交显示在列表中.
    我真的需要这个提交出现所以我可以把第一个提交作为最后一个!

  2. 当我把第一个提交作为第一个提交在列表中时(意思是第二个提交总共,因为第一个提交不在上面提到的列表中)我得到一个错误:error: could not apply b722c76... v1.4.3 BEAT release
    我只是从列表的底部剪切并放入它到顶部!我没有改变号码!
    我也试了好几次.同样的结果.

到目前为止就是这样.如果您有疑问请继续问!

原始问题

我刚刚发现了我项目的旧备份.这些备份是在我使用git之前创建的.
我现在想将它们作为旧提交添加到我的存储库中.这意味着我必须将这些提交放在所有其他提交之前.

现在有几个问题:

  1. 我如何在其他人之前提交一个提交?
  2. 我怎么能这么快?(我有很多备份!)
  3. 如何为这些"旧"提交设置日期?(我知道备份的日期!)

如果不清楚,请提及.我会解决这个问题!

最后一件事:

我已经在GitHub上发布了这个.我主要使用他们的软件来提交提交.那我怎么把它推回GitHub呢?

git backup commit github

16
推荐指数
1
解决办法
6503
查看次数