常规命令
# 删除远程分支
git push origin --delete new_a
## 删除异常
error: unable to delete 'issue/2020072000117-add-the-operation-log-for-file-dump': remote ref does not exist
error: failed to push some refs to 'cs.devops.xxx.org:XXX/personal/cluster-manager.git'
在gitlab上查看远程分支确实已经删除,但是通过git branch -a 仍然可以看到该分支,最后通过git remote show origin命令查看,
按照该命令给出的提示,执行git remote prune origin命令后就解决了这个问题
# 删除本地分支
git branch -d new_a
# 撤销提交
HEAD^的意思是上一个版本,也可以写成HEAD~1
如果你进行了2次commit,想都撤回,可以使用HEAD~2
--mixed
意思是:不删除工作空间改动代码,撤销commit,并且撤销git add . 操作
这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。
--soft
不删除工作空间改动代码,撤销commit,不撤销git add .
--hard
删除工作空间改动代码,撤销commit,撤销git add .
注意完成这个操作后,就恢复到了上一次的commit状态
# 查看差异
git diff
# z,b:上一页
# f,space:下一页
# 把本次commit叠加到上次commit上面,且使用上次的commit -m
## 优美方式如下
# https://www.jianshu.com/p/c9db76c2936e
git commit --amend --no-edit
# 这样新的修改会附加在上一次提交上面
## 暴力方式如下(保留代码地回退两次)___谨慎使用
git reset --mix HEAD~2
git add -A
git commit -m "上次的message"
git push
# 使用Git下载指定分支命令为:
git clone -b 分支名仓库地址
# 查看历史提交
git log --oneline
git log
git log --all
冲突解决
一、在一个分支下使用git pull文件时和本地文件冲突
场景:多个小伙伴都在同一个dev分支下开发,别人提交了代码,你没有及时pull。
当你使用git pull代码时,经常会碰到有冲突的情况。
简要:主要是使用git stash命令分成以下几个步骤进行处理
1、git stash
先将本地修改存储起来
2、git pull
获取内容
3、git stash pop
还原暂存的内容
4、此时会提示冲突 解决冲突
<<<<<<< Updated upstream 和=====之间的内容就是pull下来的内容,
====和stashed changes之间的内容就是本地修改的内容。
自行确定需要的内容。
解决完成之后,就可以正常的提交了。
5、继续修改你的代码
然后就可以顺利push了
二、合并某个dev分支到master分支时冲突
你落后了提交不要在自己有过提交之后merge主分支,否则你push之后,多一个merge提交历史,导致到时候主分支提交记录很乱,所以只有在你没有提交过的时候才能先merge
场景:多个小伙伴在各自分支下开发,别人先提交冲突文件并且merge到主分支,你在提交并且merge到主分支时提示有冲突。
简要:重新拉取主分支代码与自己所在分支合并,解决冲突。然后push。
1、git checkout master
切换到主分支
2、git pull
拉取主分支最新代码
3、git checkout dev1
切换到dev1分支
4、git pull
拉取最新代码
5、git merge master
合并主分支最新代码到dev1分支
6、此时肯定会有冲突 解决冲突
7、git push
推送本地dev1分支最新代码到远程dev1分支
8、从新提交merge request或请求上级重新合并dev到master分支
————————————————
原文链接:https://blog.csdn.net/bocai_xiaodaidai/article/details/103776753
已经合并的请求不要再git commit --amend --no-edit
这样子会导致远程检测出合并冲突
不好回退这个命令了,所以直接备份自己的修改,然后删掉当前分支,重新pull主分支,新建分支,加一个新的合并请求
多次提交
只要远程合并请求未同意,就可以继续push修改远程分支,这样远程的变更也会实时同步,不用重新提交合并请求
配合 git commit --amend --no-edit 使用
克隆单分支
发现**-sys-files
克隆只有*****x.0.4
所以 git clone -b branchA http://adm***
git reset HEAD小心点
因为自己忘了切换分支,直接在主分支add了文件,没用add reset HEAD <file>
,而用了add reset HEAD~
然后自己也没有及时发现问题的原因,只知道出了错误,然后就切分支去git add
自己需要提交的文件完成工作了
然后现在发现了问题的本质了,就知道要git reset到一个很新的版本了
因为git pull origin XXX
再 git log
发现没有新的提交记录
然后git log --all
才发现自己的分支停在了我的那提交那里(不会因为我的pull改变!)
所以 git reset --hard **(git log --all里最新的版本号)
解决了问题
要把修改转移到另外的分支,但直接跳转分支失败
一般来说是你要跳转的分支添加了修改的内容但未提交,然后你要跳转的分支没有你这些修改的内容,强行跳转会让你的修改内容丢失
所以git不准你跳转,并报错
error: Your local changes to the following files would be overwritten by checkout:
cluster_manager/common/public_macro.py
Please commit your changes or stash them before you switch branches.
Aborting
解决方案如下
# 检测状态
git status
# 确定本分支需要提交的内容,有则先提交本分支
git add ***
# 保存修改到暂存区
git stash
# 看清况决定是否要切换到主分支,pull最新代码
git switch master
git pull origin **
# 创建或移动到新分支
git checkout -b new_branch
# 弹出你的修改内容
git stash pop