我最近在学习如何使用Git,但是我经常遇到试错的情况。因此我需要删除并重新创建我的远程和本地仓库。有没有一种方法可以回滚到仓库的第一个提交,并删除其后的所有历史记录?基本上是为了得到一个全新的状态来进行实验。
我正在学习如何使用git,我做了很多尝试,所以需要删除并重新创建远程和本地仓库。是否有一种方法可以回滚到仓库的第一次提交,并删除该提交之后的所有历史记录?这样就可以获得一个干净的状态以进行实验。我最近在学习如何使用Git,但是我经常遇到试错的情况。因此我需要删除并重新创建我的远程和本地仓库。有没有一种方法可以回滚到仓库的第一个提交,并删除其后的所有历史记录?基本上是为了得到一个全新的状态来进行实验。
我正在学习如何使用git,我做了很多尝试,所以需要删除并重新创建远程和本地仓库。是否有一种方法可以回滚到仓库的第一次提交,并删除该提交之后的所有历史记录?这样就可以获得一个干净的状态以进行实验。% git rev-list --max-parents=0 --abbrev-commit HEAD
aa8119f
% git reset aa8119f
...或者
% git reset --hard aa8119f
...根据您是否想保留或丢弃自初始提交以来所做的所有更改。(上述假设您只有一个分支。如果不是这样,您还需要删除任何其他分支,可以使用 git branch -d <BRANCHNAME>
命令。)
最后,您将运行
% git push -f
git push -f
是不可取的。git init
之后立即运行类似以下的命令:% git commit --allow-empty --allow-empty-message -m ''
% git tag -a -m '' ROOT
% git reset ROOT
或者
% git reset --hard ROOT
git rm *
来清理文件(如果您修改了文件,请小心),然后使用git commit --amend --allow-empty --reset-author --date= -m "Erased history"
来清除第一个提交的信息。 - TWiStErRobgit reset --hard
。 - Eduard你可以重置到第一个提交:
"如何在 'git log' 中显示第一个提交?"描述了如何找到第一个提交:
git log --pretty=format:%H | tail -1
(仅在没有多个根分支的情况下起作用)
git reset --hard yourFirstCommitSHA1
请注意,在重置后,如果要真正地开始一个全新的仓库,你可以简单地初始化一个新的git仓库并复制刚刚重置的第一次提交的内容(然后在这个新仓库中添加、提交)。
git branch
提供并记录,而不是由git checkout
提供;我觉得这有点反常规,因为你必须要检出这样一个分支才能创建它。) - kjogit checkout <first-commit-sha>
rm -rf .git
git init
git add -A
git commit -m 'Initial Commit'
.git/config
),并且 2) 完全清除子模块(它们的提交和配置)。因此,请确保备份你关心的配置文件设置,并确保你没有未推送的子模块提交。还有可能存在其他问题,所以总的来说,我不赞同这种解决方案。 - void.pointer切换至主分支:
$ git checkout master
显示日志:
$ git log
回退到首次提交:
$ git reset --hard <you first commit number>
然后,将更改推送到远程:
$ git push --force origin
git tag master-root $(git rev-list --topo-order master|sed '$!d')
git init ../reset-my-repo
cd ../reset-my-repo
git fetch $OLDPWD master-root
git checkout -B master FETCH_HEAD
--topo-order
以防止错误的时间戳)git reset --hard <commit_id>
commit_id
是某个历史提交的 SHA1。
然而,如果您是在学习和进行实验,则很少需要使用它。
相反,您可以为您的实验创建新分支,例如:
git branch experiment <commit_id>
git checkout experiment
...
这基本上与第一种变体相同,但如果需要,您可以切换回去。
您还可以重新命名分支,使您的实验具有原始分支名称,例如:
git branch -m master backup
git branch master
git checkout master
如果你想销毁 backup
分支,只需执行以下操作:
git branch -D backup
或者通过Shell脚本 :)
#!/bin/bash
variable=`git rev-list --max-parents=0 --abbrev-commit HEAD`
git reset --hard $variable
git push -f
echo "Ja pie***** cos Ty odje***..."