这是我参与11月更文挑战的第24天,活动详情查看:2021最后一次更文挑战
场景例子
更新代码时,遇到代码冲突的时候
-
没有使用git add 将代码加到暂存区,即代码还在工作区时,使用 git checkout命令丢弃修改。
git checkout [file path]
## 丢弃app.java文件的修改 git checkout app.java ## 丢弃所有工作区的修改 git checkout . 复制代码
-
在使用了git add将代码加到暂存区了,使用 git reset HEAD 命令
-
保留工作区、清除暂存区代码
git reset [--mixed] HEAD^
-
保留工作目录的内容,并将工作区的内容所带来的新文件差异放进暂存区
git reset --soft HEAD^
-
清除工作区、暂存区的代码
git reset --hard HEAD^
- 本地有暂时不方便提交的代码时,例如突然有bug要修复,本地的代码还在开发中,那么就适合使用 git stash命令将代码储存起来。
git stash save 'msg' # 保存当前工作区修改的内容
git stash list # 查看stash栈的所有内容
git stash apply # 恢复stash栈储存的内容到本地,但不删除
git stash drop # 主动删除stash栈储存的内容
git stash pop # stash栈顶出栈
# 当stash 里面有多个存储时,想指定某一个恢复
git stash apply stash@{0}
或
git stash pop stash@{0}
复制代码
- git push时提示推送失败
- 不同人修改了不同文件;
- 不同人修改了同文件的不同区域;
- 不同人修改了同文件的同一区域;
前两种情况,使用git pull 可以实现代码自动合并;
也可以使用git fetch 和 git merge 命令去分开手动执行。
git fetch # 将远程分支更新到本地
git merge xxx # 合并远程分支
xxx 可以是远程分支上的某个提交,也可以是远程分支的名字,例如origin/master
复制代码
第三种情况,使用git pull命令的话,git 在自动合并时可能会报错。这种情况是需要手动修改冲突提交的,因为git无法选择应该保留冲突的哪一方。
找到冲突的文件,使用vi 或者ide 将冲突修复,看保留哪些修改。
修改完后,使用git add + commit 命令将文件提交,后推送即可。
参考文章
[Git Reset 三种模式] www.jianshu.com/p/c2ec5f06c…
近期评论