git常见问题
git常用命令
git fetch 获取所有分支
git branch -a 所有分支
git status 状态
git checkout -b 3.2 创建并切换分支
git push origin 3.2:3.2 本地新分支推到远程去
git checkout xx 切到已存在的分支
git branch -D temp 删除分支
git push origin --delete temp3 删远程分支
git merge temp2 合并分支
git reset --merge 回退merge
git branch --set-upstream-to=origin/mrh/4.0.0 4.0 两个分支track追踪
回滚操作
git reflog 查询各个版本号
git reset --hard 711e06b3 回滚merge
idea里 撤销本次commit提交,但保留本地代码
打开项目show history
选择上一个提交,选择 reset current branch to here
选择 mix
checkout时放弃本分支修改
选择force checkout
cherry-pick使用
把A分支上某个提交合并到B分支上去
项目切到A分支,项目目录里右键打开git bash
git log 查看所有提交记录,找到想要提交的hash值 如: 8bb1d8b6c969f131111111
再切到B分支,执行 git cherry-pick 8bb1d8b6c969f131111111即可
1.合并时出现很多hint,提示abort
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
分支状态变为cherry-in,说明有冲突,可在本地解决冲突,提交后分支会正常,如果还没变,则执行git cherry-pick --abort 放弃合并.
git游离状态解决方案 HEAD is now at 029bab7f xx
git游离状态产生的原因是:使用git命令checkout版本时,不小心checkout到了远程分支,但此分支本地并没有,因此此时会处于 'detached HEAD' 状态,
即本地HEAD找不到本地分支会指向远程分支的最后一次提交.
问题现象:
一.会提示
You are in 'detached HEAD' state. You can look around, make experimental changes and commit them,
and you can discard any commits you make in this state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create,
you may do so (now or later) by using -c with the switch command.
Example: git switch -c Or undo this operation with: git switch- Turn off this advice by setting config variable advice.detachedHead
to false HEAD is now at da589bf6
二.此时运行git branch -a发现有(HEAD detached at xxx)这种奇怪的本地版本 这样的提示.
此时不要慌,百度了很多,都是这种解决方法 https://www.cnblogs.com/kibana/p/8917501.html 但明显是天下文章一大抄,这种其实没有说全,明显的硬伤是在第二步时根本无法切到主分支,
因为此问题的核心是本地没有远程的主分支.
此时建议:
1.git fetch 获取所有分支,先获取所有最新远程分支
2.git branch -a 所有分支,查看所有分支
3.git checkout -b 4.0 origin/mrh/4.0.0 拉取远程到本地
4.git branch tmp da589bf6 创建一个临时分支合并上面最后一次提交id
5.git checkout 4.0 再切到本地4.0,准备合并临时分支
6.git merge tmp 合并临时分支
此时会提示 Your branch is ahead of 'origin/mrh/4.0.0' by 2 commits. (use "git push" to publish your local commits) 提示比远程分支比2个版本,
说明即将成功了,合并了最新的改动(这时因为我本地同时有最新的改动,瞎操作导致的,一般游离应该不会有) 重新push到origin/mrh/4.0.0 远程分支后再次使用git branch -a查看,
发现没有了 (HEAD detached at xxx) 这种版本,说明成功解决了.
7.此时可以删除tmp分支了,git branch -D tmp 删除分支.