Git使用技巧

1. git分支创建与使用

  1. 创建分支

右键选择点击

创建分支

取个分支名

  1. 提交分支

    1. 随便修改一个代码,提交到远程

右键选择点击提交代码

提交

push

  1. 切换分支

查看本地分支

查看本地和远程所有分支

切换分支

  1. 相关命令操作

idea分支操作相关命令

本地与远程分支操作相关命令

  • 使用命令创建分支并上传到远程git,打开终端
    git checkout -b dev 在本地创建分支dev
    git push origin dev 将分支dev上传到远程git上
  • 更新git上新创建的分支
    git fetch
    git fetch <远程主机名> <分支名>
    默认情况下,git fetch取回所有分支(branch)的更新。如果只想取回特定分支的更新,可以指定分支名。例如:
    git fetch origin master

2. master分支创建错误,gitlab怎么删除master分支

1.为什么删除不了?
不能删除
2. 修改protected属性
一
二
三
现在master不是protected了
3. 修改default属性
一
二
保存后发现master没有了default属性,可以删除了
4. 删除master分支后,新建一个master分支from dev
新建master
5. 将dev的default和protected属性转移到master上

3. 别人的git项目怎么上传到自己git上

  1. 删除.git文件夹再上传
    创建本地仓库
    导入本地仓库
  2. commit and push
  3. 如果报错Invalid VCS root mapping The directory <Project> is registered as a Git root, but no Git repositories were found there. Configure
    删除以前git项目配置
  4. 如果push rejected,去guns文件夹右键Git Bash Here,输入git pull origin master --allow-unrelated-histories
  5. 重新push

4. 使用git提交中删除idea

先有项目,然后分享至git,没有添加gitignore,导致.idea文件同样上传。想删除.idea办法:

#你要先去删除远程的 .idea 目录。
#这种情况,你是在设计gitignore 之前就没考虑好的,现在的措施是:
#(这样会删掉你本地的,不过你重新打开一次项目就有会自动给你生成了)
rm -rf .idea
#提交所有变化
git add -A .
#提交并push
git commit -m "删除.idea文件"
git push
git pull
#pull 后再看看同步后,远程的删掉没有;如果本地有,再次重复下。
#干净后,取消跟踪
git rm -r --cached .idea
git push

5. git获取某个tag代码

16872@DESKTOP-LF85VK5 MINGW64 /d/javaProject/idea/guns (master)
#查看所有tag
$ git tag
ultimate-v1.0
v1.0
v2.0
v3.3

16872@DESKTOP-LF85VK5 MINGW64 /d/javaProject/idea/guns ((v3.2))
#获得tag代码
$ git checkout v3.3
warning: refname 'v3.3' is ambiguous.
Checking out files: 100% (1676/1676), done.
Previous HEAD position was 6ebd6ede 更新协议
Switched to branch 'v3.3'

6. git合并分支

dev分支修改了很多,现在想要把dev分支的代码合并到master分支,先在dev分支将所有代码提交到git上

16872@DESKTOP-LF85VK5 MINGW64 /d/javaProject/idea2/p-cont (dev)
$ git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.

16872@DESKTOP-LF85VK5 MINGW64 /d/javaProject/idea2/p-cont (master)
$ git merge dev
Updating c2523e4..29b94ec
Fast-forward
 .gitignore                                         |   3 +
 p-cont-dubbo/p-cont-dubbo-api/pom.xml              |   6 +-
 .../cont/api/ContManOperationLogService.java       |  13 +++
 .../cont/form/ContManOperationLog.java             |  81 +++++++++++++
 .../service/ContManOperationLogServiceImpl.java    |  28 +++++
 .../src/main/resources/env/dev/dubbo.properties    |  12 +-
 .../src/main/resources/env/dev/mysql.properties    |  36 +++---
 .../resources/spring/applicationContext-db.xml     | 130 +++++++++++++++++++++
 .../resources/spring/applicationContext-dubbo.xml  |   3 +-
 .../com/chinaredstar/cont/config/ReloadConfig.java |  42 +++----
 .../com/chinaredstar/cont/config/WebConfig.java    |   4 +
 .../cont/controller/testController.java            |  29 +++++
 .../com/chinaredstar/cont/log/WebLogAspect.java    | 125 ++++++++++++++++++++
 .../main/resources/env/dev/application.properties  |   6 +-
 .../src/main/resources/env/dev/dubbo.properties    |  11 +-
 .../resources/spring/applicationContext-bean.xml   |   1 -
 .../resources/spring/applicationContext-dubbo.xml  |   2 +-
 17 files changed, 480 insertions(+), 52 deletions(-)
 create mode 100644 p-cont-dubbo/p-cont-dubbo-api/src/main/java/com/chinaredstar/cont/api/ContManOperationLogService.java
 create mode 100644 p-cont-dubbo/p-cont-dubbo-api/src/main/java/com/chinaredstar/cont/form/ContManOperationLog.java
 create mode 100644 p-cont-dubbo/p-cont-dubbo-service/src/main/java/com/chinaredstar/cont/service/ContManOperationLogServiceImpl.java
 create mode 100644 p-cont-dubbo/p-cont-dubbo-service/src/main/resources/spring/applicationContext-db.xml
 create mode 100644 p-cont-web/src/main/java/com/chinaredstar/cont/controller/testController.java
 create mode 100644 p-cont-web/src/main/java/com/chinaredstar/cont/log/WebLogAspect.java

16872@DESKTOP-LF85VK5 MINGW64 /d/javaProject/idea2/p-cont (master)
$ git pull
Already up to date.

16872@DESKTOP-LF85VK5 MINGW64 /d/javaProject/idea2/p-cont (master)
$ git push origin master
Total 0 (delta 0), reused 0 (delta 0)
remote: wb000051@chinaredstar.com
remote: wb000051@chinaredstar.com
remote: wb000051@chinaredstar.com
remote: successfully
To code.corp.rs.com:yj-be/p-cont.git
   c2523e4..29b94ec  master -> master

7. git pull :因为文件冲突pull失败

如果想放弃本地的文件修改,可以使用git reset --hard FETCH_HEAD
FETCH_HEAD表示上一次成功git pull之后形成的commit点。然后git pull.

8. git将某分支的某次提交合并到另一分支

代码开发的时候,有时需要把某分支(比如develop分支)的某一次提交合并到另一分支(比如master分支),这就需要用到git cherry-pick命令。

  • 首先,切换到develop分支,敲 git log 命令,查找需要合并的commit记录,比如commitID:7fcb3defff

在这里插入图片描述

  • 然后,切换到master分支,使用 git cherry-pick 7fcb3defff 命令,就把该条commit记录合并到了master分支,这只是在本地合并到了master分支

  • 最后,git push 提交到master远程(可以用命令也可以用工具的push操作),至此,就把develop分支的这条commit所涉及的更改合并到了master分支。

如果文件有冲突,cherry-pick 会中断,
你解决冲突后,使用git add添加冲突文件,使用git cherry-pick --continue完成cherry-pick操作。
或者使用git cherry-pick --abort中断操作。

如果你cherry-pick的是别人分支的commit,可能会遇到错误fatal: bad object ...,那是因为git cherry-pick是本地特性,本地要有这个commit才可以被git cherry-pick。如果没有这个commit id,就会出现这个错误。

9. 解决git push出现Your account has been blocked问题

git push报错
在这里插入图片描述
解决方案,重新设置下远程仓库地址,然后在push

git remote set-url origin 远程仓库地址

10 提交到远程仓库怎么撤回

当前分支的某次提交可能是误操作,已经Push到远程分支了,想要撤回

# 查询提交记录
git log

# 本地代码会回退到
git reset --hard  <想回退到的最后一次提交>

# 强制提交
git push -f

也可以用idea图形操作
在这里插入图片描述
在这里插入图片描述
然后强制提交,同时错的提交记录会删除

11. 分支互换

问题场景:dev分支为新功能代码,但是这一次不上线,jenkins部署开发环境以dev分支自动触发,基于dev分支新建一个dev-temp分支暂时存储dev分支的新代码,然后将dev分支的内容重置成master分支

  • 切换到dev分支,将本地的 dev 分支重置成 master
git reset --hard master
  • 然后推送替换的 dev 到远程仓库 dev 分支
git push origin dev --force
  • 等到这个版本上线成功后,再将 dev-temp 分支合并到 dev 分支,开发上次未发布的新功能

12. 基于某次提交创建一个分支

commitId:e50b2d4ed2edaeac96a7ed76cf68d7776435b17b

创建tag

git tag v_2021-11-03 e50b2d4ed2edaeac96a7ed76cf68d7776435b17b

推送到远程仓库

git push origin v_2021-11-03

然后可以基于这个tag创建新分支

13. 解决 Git 更新本地冲突

报错 commit your changes or stash them before you can merge

13.1 stash
git stash
git pull
git stash pop
13.2 直接完全覆盖本地修改
git reset --hard
git pull

14. git子模块

当前项目里面有一个demo模块用于测试,可能有多个人测试,每个人测试的代码不一样,引入git子模块添加一个新的项目,每个人是一个分支保存各自的demo测试代码

将新项目tophant-cloud-starter作为子项目放入starter

不用先创建starter文件夹

终端

git submodule add https://git.tophant.com/tophant-framework/tophant-cloud-starter.git starter

在这里插入图片描述

参考 https://cloud.tencent.com/developer/article/2136829

15. 基于某个tag创建一个分支

git checkout -b <branch_name> <tag_name>

其中,<branch_name>是你想要创建的新分支的名称,<tag_name>是你想要基于的tag的名称。

例如,如果你想要基于tag v1.0创建一个名为feature-branch的新分支,命令将如下所示:

git checkout -b feature-branch v1.0

一般此时会有两个远程
在这里插入图片描述
push默认是origin,可能推不上去
在这里插入图片描述
修改为我们自己的远程origin-my,然后push
在这里插入图片描述

16. 添加tag

创建轻量级标签

git tag 1.1.0

创建带注释的标签

git tag -a 1.1.0 -m "tag message"

查看已创建的标签

git tag

推送标签到远程仓库

git push origin 1.1.0

推送所有标签到远程仓库

git push origin --tags
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值