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 删除分支.

 

posted @ 2020-12-15 16:14  水滴aym  阅读(12274)  评论(0编辑  收藏  举报