error: Your local changes to the following files would be overwritten by merge

git stash  
git pull origin master
git stash pop

选择性提交 commit – git cherry-pick

当自己的分支时基于dev分支开发时,想把自己分支的某个 ​​commit​​​ 记录提交到另一个分支如 ​​test​​​,
可采用 ​​​git cherry-pick​​​ 找到提交记录中 ​​commit​​ 对应的 ​​commitHash​​,切换到 ​​test​​ 分支,执行如下命令

git cherry-pick 720db936

git 常见的问题处理_解决方法

  • ​git cherry-pick​​ 命令的参数,不一定是提交的哈希值,分支名也是可以的,表示转移该分支的最新提交。
  • 转移多个提交
# 下面的命令可以转移从 A 到 B 的所有提交。它们必须按照正确的顺序放置:提交 A 必须早于提交 B,否则命令将失败,但不会报错。
git cherry-pick A..B
# 注意,使用上面的命令,提交 A 将不会包含在 Cherry pick 中。如果要包含提交 A,可以使用下面的语法。
git cherry-pick A^..B

基于其他分支,创建一个新分支

# 第一种方法 -b 创建并切换
git checkout -b wfd_dev origin/dev

# 第二种方法
git checkout dev
git checkout -b wfd_dev

创建完成后 push 到远程仓库

git push origin wfd_dev

git 常见的问题处理_解决方法_02

删除本地分支

git branch -d
# -D 代表强制删除
git branch -D
  • ​error: Cannot delete branch 'xxx' checked out at 'xxxx'​​​ 此错误是在​​git​​ 删除分支时报的错误,删除分支时,当前分支不能停留在要删除的分支上,要切换到其他任意分支,再去删除目标分支。
  • git 常见的问题处理_解决方法_03

  • 如果本地分支没有合并到其他分支,或者没有对应的远程分支,删除时则会提示这个错误。直接选择强制删除即可。
  • git 常见的问题处理_工作空间_04

git 撤消已经提交的 commit

执行 ​​commit​​​ 后,还没执行 ​​push​​​ 时,想要撤销这次的 ​​commit​

# 撤销了commit,如果想要连着add也撤销的话,--soft改为--hard(删除工作空间的改动代码)。
# HEAD^ 表示上一个版本,即上一次的commit,也可以写成HEAD~1。
# 如果进行两次的commit,想要都撤回,可以使用HEAD~2。
# --soft 不删除工作空间的改动代码 ,撤销commit,不撤销git add file
# --hard 删除工作空间的改动代码,撤销commit且撤销add
git reset --soft HEAD^
git reset --soft HEAD~
git reset --soft HEAD~2

git 切换分支时,本地有修改的代码

报错如下

error: Your local changes to the following files would be overwritten by checkout:

解决方法

# 第一种
git add.
git stash
# 取出的时候使用
git stash pop
# 第二种方式 发起一个commit 存到提交历史
git add.
git commit -m "commit message"

git 放弃本地修改,强制拉取更新

开发时,对于本地的项目中修改不做保存操作(或代码改崩),可以用到Git pull的强制覆盖,具体代码如下:

git fetch --all
git reset --hard origin/master
git pull

git fetch 指令是下载远程仓库最新内容,不做合并
git reset 指令把HEAD指向master最新版本

merge 问题 you need to resolve your current index first

解决方法:
第一种:处理冲突文件

# 第二种:回退到冲突前
git reset --merge

合并多次提交的 commit

假设目前有两条 ​​commit​​ 记录

git 常见的问题处理_解决方法_05


想要合并两个commit记录为一条

git rebase -i

出现如下界面

git 常见的问题处理_工作空间_06


其中需要注意的是以下命令

p, pick = use commit (即使用这个commit)
r, reword = use commit, but edit the commit message(改变commit 的信息)
s, squash = use commit, but meld into previous commit(融入先前的commit)
f, fixup = like “squash”, but discard this commit’s log message(放弃此提交的日志消息)
d, drop = remove commit(移除commit)

当我们要合并两条记录时,将第二条记录的 ​​pick​​​ 改为 ​​s​​ 即可

git 常见的问题处理_git_07


保存后出现如下界面

git 常见的问题处理_解决方法_08


这个界面需要我们处理提交信息的修改,如果只需要一个提交 ​​message​​ ,可把另一个message前面加上 # 号,也可以不做处理,直接保存,保存后再次查看两个记录就合并成一个记录了。

git 常见的问题处理_解决方法_09


可能出现的问题,把第一条记录的 ​​pick​​​ 改为了 ​​s​

git 常见的问题处理_解决方法_10


注意不要合并先前提交的东西,也就是已经提交远程分支的纪录。

可使用其提示的命令 ​​git rebase --edit-todo​​,重新修改 ​​rebase​​ 时提示的信息,保存后再执行 ​​git rebase --continue​​ 修改提交的 ​​meseage​​ 信息

也可以直接执行 ​​git rebase --abort​​ (会放弃合并,回到rebase操作之前的状态,之前的提交的不会丢弃),然后重新执行 ​​git rebase -i​