使用Git时会出现各种各样的问题,下面是几种情况下怎么反悔的操作
一,未加入缓存区,撤销文件修改
git checkout -- file
二,已加入缓存区,撤销文件提交
git reset HEAD file
或git rm --cached file
三,已提交到本地,回滚提交
git reset --HARD commit_id/HEAD^n
四,已push到远程
1,git revert的方式
1)git revert commit_id //将要撤销的提交revert为一次新的提交,这样不仅提交被撤销了,而且本地分支也比远程分支多一次提交
2)git push origin master //推送到远程
这种方式是最方便的,但缺点是多了2次无用的commit,使整个分支的commit不再整洁。2,如果远程仓库不是使用git init --bare建立的裸仓库(裸仓库无法回滚提交),而是一个普通仓库(通过git init建立),那么你可以登录到远程服务器,然后回滚远程分支,然后再把本地分支回滚。
3,可删除远程分支,然后回滚本地分支,然后将本地分支push到origin
1)git branch xxx_backup //创建备份分支
2)git push origin xxx_backup:xxx_backup //将备份分支推送到origin
3)git checkout xxx //切回要撤销修改的分支
4)git reset --hard commit_id //撤销本地commit
5)git push origin :xxx //删除远程xxx分支
6)git push origin xxx:xxx //将本地撤销修改后的xxx分支推送到origin
7)git branch -d xxx_backup //删除本地备份分支
git push origin :xxx_backup //删除远程备份分支
上述步骤5执行时可能会出现错误,如下:
尤其是远程仓库是在github或oschina上时,因为这些网站中将某分支设置成了当前分支,而删除当前分支是不允许的,所以要在这些网站的设置中切换当前分支为其它分支,然后再此执行步骤5.
4,方法3中,如果是自己建立的仓库,默认分支是master,我没找到修改默认分支的办法,master分支也就无法删除,方法4也就没用了。但有另一种方法可以解决问题
1)登录服务器,备份中央仓库
mv demo.git demo_backup.git
2)新建一个空的demo.git
git init --bare demo.git
3)通过回滚,修复本地提交到正常状态
git reset --hard 提交id
4)推送本地的master分支到服务器的demo.git
git push remote master:master
这样的做法,可以保存之前的提交记录,是比较好的修复方式;这种方法比较适合修复出现代码覆盖的情况
如果中间出现问题,请通过demo_backup.git找回中央仓库
错误的做法
1,直接reset本地提交,然后push到origin
这种做法是错误的,git会报错,原因是远程仓库中该分支比本地分支多n次commit,只能先pull,再push。而如果先pull的话,那本地又变成和远程一样了,是解决不了问题的。
相关推荐
本文将详细介绍如何在Git中进行撤销操作,以便恢复到先前的状态或者取消不希望的更改。 1. **撤销对已经暂存区的文件的修改** 当你使用`git add`命令将文件添加到暂存区后,如果想要撤销对文件的暂存状态,可以...
6. **查看当前状态**:此时执行`git status`命令会显示第二次修改尚未加入暂存区。 ```bash $ git status # On branch master # Changes not staged for commit: # (use "git add <file>" to update what will...
- **撤销未提交的更改**: `git reset --hard HEAD`可恢复到最近一次提交的状态,但未添加到暂存区的更改将丢失。 - **回退版本**: `git revert <提交哈希>`或`git reset --hard <提交哈希>`可以回退到特定版本,后...
6. 撤销操作:如果误操作,Git提供了强大的撤销功能,如`git reset`和`git revert`,可以在不影响历史记录的情况下恢复到之前的状态。 7. 快照式模型:Git以文件快照的形式存储项目状态,每次提交都是对整个项目...
- 当文件被添加到暂存区后,想要撤销可以使用`git reset HEAD <file>`将文件从暂存区中移出,然后使用`git checkout -- <file>`撤销修改。 Git还有一些高级功能,比如: - 使用标签(tag)来标记重要的提交点,`git...
4. 查看状态:`git status`可以查看当前工作目录的状态,哪些文件被修改或未追踪。 5. 追踪远程仓库:`git remote add origin <url>`将远程仓库与本地仓库关联。 6. 推送更改:`git push origin master`将本地master...
4. **撤销操作**:通过`git reset`和`git revert`,可以撤销错误的提交,保护代码的完整性。 5. **合并冲突解决**:当多个开发者修改同一部分代码时,Git会提示合并冲突,用户可以手动解决这些冲突后再提交。 Git ...
`git reset` 用于撤销某次提交,之后的修改会被退回到暂存区或工作目录。这两种命令的区别在于它们处理撤销的方式不同。 - **分支合并策略**:使用 `-s` 参数指定合并策略,常用的策略包括 `ours`、`theirs` 和 `...
3. **查看文件状态**:使用`git status`命令可以查看当前工作目录下的文件状态,包括未跟踪的新文件、已修改但未暂存的文件以及已暂存等待提交的文件。 4. **添加文件到暂存区**:通过`git add`命令可以将工作目录...
- **撤销与重做**:掌握撤销错误更改及恢复工作的方法,保持代码库的清洁和有序。 - **变更日志生成**:学会创建清晰的变更日志,记录每次提交的信息,便于追踪修改历史。 - **下载与更新**:掌握从远程仓库下载...
- **查看状态**:`git status`可查看当前仓库的状态,哪些文件被修改,哪些已添加到暂存区。 - **分支管理**:`git branch`列出所有分支,`git checkout -b <branch>`创建并切换到新分支。 4. **远程仓库连接** ...
4. 撤销操作:如果误操作,Git提供了强大的撤销机制,可以撤销提交、重置分支等。 5. 差异分析:通过`git diff`命令查看文件或代码的差异。 6. 合并冲突:当多人同时修改同一部分代码时,Git会提示合并冲突,需要...
- 使用`git reset`撤销最近一次提交。 - 使用`git rebase`或`git merge`合并分支时可以调整提交历史。 - **分支管理** - 创建新分支:`git branch <branch-name>`。 - 切换分支:`git checkout <branch-name>`...
git checkout -- readme.txt 撤销修改:1. 文件在添加到缓存区前修改,则回退到原工作区状态;2. 文件在添加到缓存区后修改,则回退到原缓存区状态。也即是将readme.txt撤回到最近一次git add或git commit状态...
- `git reset` 可以用于撤销最近的提交或将工作目录回滚到之前的某个状态。 #### 八、Git检出 - **8.1 HEAD 的含义** - HEAD 是一个特殊的引用,指向当前工作目录所在的分支的最新提交。 - **8.2 分离头指针的...
### Git基本操作知识点详解 #### 一、Git简介 Git是一种开源的分布式版本控制系统,能够高效地处理从小...通过以上内容的学习和实践,您将能够掌握Git的基本使用方法,并能够有效地利用Git进行团队协作和版本控制。
- **撤销更改**:`git reset`和`git checkout`可以撤销工作目录或暂存区的更改。 5. **分支管理** - **创建分支**:`git branch`创建新的开发分支。 - **切换分支**:`git checkout`在分支间切换。 - **合并...