Git常用命令_初入职场必备(长期更新维护)

13 篇文章 0 订阅

常规命令

# 删除远程分支
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 XXXgit 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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值