相关疑难解决方法(0)

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

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

git squash git-squash

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

使当前提交成为Git存储库中的唯一(初始)提交?

我目前有一个本地Git存储库,我将其推送到Github存储库.

本地存储库有~10个提交,Github存储库是这个的同步副本.

我想要做的是从本地Git存储库中删除所有版本历史记录,因此存储库的当前内容显示为唯一的提交(因此存储库中的旧版本文件不会存储).

然后,我想将这些更改推送到Github.

我已经调查了Git rebase,但这似乎更适合删除特定版本.另一个可能的解决方案是删除本地仓库,并创建一个新的仓库 - 虽然这可能会创造很多工作!

ETA:有一些未跟踪的特定目录/文件 - 如果可能的话,我想保持这些文件的跟踪.

git github git-commit

631
推荐指数
9
解决办法
23万
查看次数

在Git中压缩前两个提交?

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

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

有没有办法实现它?


中度相关:

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

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

git rebase git-rebase squash

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

Git:如何压缩分支上的所有提交

我创建了新的分支master:

git checkout -b testbranch

我做了20次提交.

现在我要压缩那20个提交.我这样做:

git rebase -i HEAD~20

如果我不知道有多少提交怎么办?有什么方法可以做以下事情:

git rebase -i all on this branch

git version-control

241
推荐指数
15
解决办法
13万
查看次数

结合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存储库以删除所有提交?

如何重置远程和本地GIT存储库以删除所有提交,并以当前Head作为初始提交重新开始.

git version-control

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

为什么git-rebase在我所做的只是压缩提交时给我合并冲突?

我们有一个拥有超过400个提交的Git存储库,其中前几个是很多试错.我们希望通过将许多提交压缩到单个提交来清理这些提交.当然,git-rebase似乎还有很长的路要走.我的问题是它最终会出现合并冲突,而这些冲突并不容易解决.我不明白为什么会有任何冲突,因为我只是压缩提交(不删除或重新排列).很可能,这表明我并不完全理解git-rebase是如何做它的南瓜的.

这是我正在使用的脚本的修改版本:


repo_squash.sh(这是实际运行的脚本):


rm -rf repo_squash
git clone repo repo_squash
cd repo_squash/
GIT_EDITOR=../repo_squash_helper.sh git rebase --strategy theirs -i bd6a09a484b8230d0810e6689cf08a24f26f287a
Run Code Online (Sandbox Code Playgroud)

repo_squash_helper.sh(此脚本仅由repo_squash.sh使用):


if grep -q "pick " $1
then
#  cp $1 ../repo_squash_history.txt
#  emacs -nw $1
  sed -f ../repo_squash_list.txt < $1 > $1.tmp
  mv $1.tmp $1
else
  if grep -q "initial import" $1
  then
    cp ../repo_squash_new_message1.txt $1
  elif grep -q "fixing bad import" $1
  then
    cp ../repo_squash_new_message2.txt $1
  else
    emacs -nw $1
  fi
fi
Run Code Online (Sandbox Code Playgroud)

repo_squash_list.txt :(此文件仅由repo_squash_helper.sh使用)


# Initial import
s/pick \(251a190\)/squash …
Run Code Online (Sandbox Code Playgroud)

git git-merge git-rebase git-checkout git-branch

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

如何推动没有历史的新分支

我有两个不相关的分支,主人和配置的git repo.我创建了配置,清除了所有文件,然后只放入配置文件中.现在我想在远程仓库上推送它,但因为它是新的,空分支(没有我所有更改的日志和原始分支的旧版本).

我怎样才能清除所有的历史并推动它?

git

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

通过清除存储库历史记录git可用磁盘空间

所以我和一些朋友一起工作,我们都是git的新手,其中一个提交了大量的外部二进制文件,这会减慢存储库的速度,占用大量的磁盘空间.

我们刚刚启动了这个项目,所以除了自述文件外没有什么重要的.所以我们要做的是将存储库历史记录清除到当前状态.

So basicly it looks this:

Head -> A -> B -> C    total disk size 45 MB, 1 file, 300 deleted files

And we want this:

Head -> A              total disk size 1 kB, 1 file, 0 deleted files
Run Code Online (Sandbox Code Playgroud)

显而易见的解决方案是创建一个新的存储库,然后将自述文件复制到新的存储库中.但是,如果有GIT命令可以做到这一点,我想学习教育/好奇心.

我一直在试验Rebase命令,但它似乎仍然保留了旧的历史记录及其数据,这让我感到困惑,因为如果重新绑定不会从存储库中删除数据,那么您可能也不会使用它.

我一直在谷歌搜索其他一些关于这个问题的帖子,我怀疑你不能用git这样做.但是我想证实这一点.

是的,它是github上的远程目录

谢谢你的帮助.

所以对于我的解决方案,我选择这样做:

rebase using tortoisegit
squash all commits
then using git bash:
git reflog expire --all --expire-unreachable=now
git gc --aggressive --prune=now
git push origin master --force
Run Code Online (Sandbox Code Playgroud)

看起来本地存储库历史记录不希望缩小磁盘大小.但是,再次克隆存储库会显示所需的结果和磁盘大小.存储库日志也是如此.

感谢您的回复.有趣的Rebase似乎非常强大.

git

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

Git:如何压缩“master”分支上的所有提交?

我正在寻找一种方法将所有git 提交压缩到master分支中的单个大提交中。我完全理解我试图做的事情的后果,不需要解释这是危险的或者不是正确的方法 - 我想丢失我所有的历史并将这个存储库变成一个单一的大提交。

主要问题是:我没有其他活动分支,没有本地提交,并且之前的所有提交都已经推送到 remote master

也欢迎使用 Hacky 脚本。

git

10
推荐指数
2
解决办法
9700
查看次数