Mars‘s docMars‘s doc
🏠主页
  • 🍻Activiti

    • 01-核心API
    • 02-监听
    • 03-数据库表介绍
    • 04-常见问题
  • 📊JasperReport

    • 01-JaspersoftStudio工具使用
    • 02-JasperReport集成
    • 03-JasperReport常见问题
  • 🎬JavaScript

    • 01-Node
    • 02-VuePress
    • 03-Vue组件高度宽度
    • 04-显示器和屏幕高度
    • 05-页面地址
    • 06-归纳总结
  • 🍵Java

    • 01-Java8特性
    • 02-多线程
    • 03-Jar包
    • 04-Util
    • 05-validation注解
    • 06-反编译
    • 07-try-with-resource
    • 08-ThreadLocal内存泄漏
    • 09-Jvm
    • 10-Excel
    • 11-Lombook
    • 12-条件注解
    • 13-WebMvcConfigurationSupport
    • 14-WebMvcConfigurer
    • 15-分布式锁
    • 16-Caffeine
    • 17-DynamicDatasource
    • 18-MybatisPlus
    • 19-Swagger
    • 20-BeanPostProcessor
    • 21-Bean初始化
    • 22-ConfigurableApplicationContext
    • 23-常用注解
    • 24-ApplicationListener
    • 25-JavaDoc
    • 26-Spring-Cache
    • 27-StopWatch耗时统计
    • 28-Word
    • 29-Druid
    • 30-OpenFeign
    • 31-反射相关
    • 32-Fastjson
    • 33-Yaml
  • 💻Linux

    • 01-Linux常用命令
    • 02-Linux脚本汇总
    • 03-Yum源
    • 04-Debian
    • 05-Ubuntu
  • 🐋Docker

    • 01-Docker常用命令
    • 02-Dockerfile
    • 03-Swarm
    • 04-Stack
    • 05-Docker常见问题
    • 06-DockerCompose
    • 07-Docker应用用汇总
    • 08-Kasm
    • 09-Rustdesk
  • 🌐Nginx

    • 01-Nginx
  • 📈数据库

    • 01-Mysql
    • 02-Clickhouse
    • 03-Doris
    • 04-DRDS
  • 📉Kettle

    • 01-入门
    • 02-js脚本
    • 03-优化
    • 04-连接组件
    • 05-参数
    • 06-工具
    • 07-日志
    • 08-流程组件
    • 09-输入组件
    • 10-输出组件
    • 11-转换组件
    • 12-驱动
  • 🎨Git

    • 01-Git使用
  • 📝Maven

    • 01-Maven使用
    • 02-Maven配置
  • 🎯Jenkins

    • 01-Jenkins部署
    • 02-Jenkisn常见问题
  • 01-设计模式之禅
  • 02-领域驱动设计
  • 03-JavaScript高级程序设计
  • 🍓树莓派

    • 01-RaspBerry
  • 📘Markdown

    • 01-Markdown语法
    • 02-Markdown表情
    • 03-Markdown代码块语言对照
  • 📇其他

    • 01-HTML XML 转义
    • 02-GitHub
    • 03-Idea
    • 04-Nmon
    • 05-Windows
    • 06-WinSw
GitHub
🏠主页
  • 🍻Activiti

    • 01-核心API
    • 02-监听
    • 03-数据库表介绍
    • 04-常见问题
  • 📊JasperReport

    • 01-JaspersoftStudio工具使用
    • 02-JasperReport集成
    • 03-JasperReport常见问题
  • 🎬JavaScript

    • 01-Node
    • 02-VuePress
    • 03-Vue组件高度宽度
    • 04-显示器和屏幕高度
    • 05-页面地址
    • 06-归纳总结
  • 🍵Java

    • 01-Java8特性
    • 02-多线程
    • 03-Jar包
    • 04-Util
    • 05-validation注解
    • 06-反编译
    • 07-try-with-resource
    • 08-ThreadLocal内存泄漏
    • 09-Jvm
    • 10-Excel
    • 11-Lombook
    • 12-条件注解
    • 13-WebMvcConfigurationSupport
    • 14-WebMvcConfigurer
    • 15-分布式锁
    • 16-Caffeine
    • 17-DynamicDatasource
    • 18-MybatisPlus
    • 19-Swagger
    • 20-BeanPostProcessor
    • 21-Bean初始化
    • 22-ConfigurableApplicationContext
    • 23-常用注解
    • 24-ApplicationListener
    • 25-JavaDoc
    • 26-Spring-Cache
    • 27-StopWatch耗时统计
    • 28-Word
    • 29-Druid
    • 30-OpenFeign
    • 31-反射相关
    • 32-Fastjson
    • 33-Yaml
  • 💻Linux

    • 01-Linux常用命令
    • 02-Linux脚本汇总
    • 03-Yum源
    • 04-Debian
    • 05-Ubuntu
  • 🐋Docker

    • 01-Docker常用命令
    • 02-Dockerfile
    • 03-Swarm
    • 04-Stack
    • 05-Docker常见问题
    • 06-DockerCompose
    • 07-Docker应用用汇总
    • 08-Kasm
    • 09-Rustdesk
  • 🌐Nginx

    • 01-Nginx
  • 📈数据库

    • 01-Mysql
    • 02-Clickhouse
    • 03-Doris
    • 04-DRDS
  • 📉Kettle

    • 01-入门
    • 02-js脚本
    • 03-优化
    • 04-连接组件
    • 05-参数
    • 06-工具
    • 07-日志
    • 08-流程组件
    • 09-输入组件
    • 10-输出组件
    • 11-转换组件
    • 12-驱动
  • 🎨Git

    • 01-Git使用
  • 📝Maven

    • 01-Maven使用
    • 02-Maven配置
  • 🎯Jenkins

    • 01-Jenkins部署
    • 02-Jenkisn常见问题
  • 01-设计模式之禅
  • 02-领域驱动设计
  • 03-JavaScript高级程序设计
  • 🍓树莓派

    • 01-RaspBerry
  • 📘Markdown

    • 01-Markdown语法
    • 02-Markdown表情
    • 03-Markdown代码块语言对照
  • 📇其他

    • 01-HTML XML 转义
    • 02-GitHub
    • 03-Idea
    • 04-Nmon
    • 05-Windows
    • 06-WinSw
GitHub
  • 🏫技术相关

    • 🍻Activiti

      • 01-核心API
      • 02-监听
      • 03-数据库表介绍
      • 04-常见问题
    • 📊JasperReport

      • 01-JaspersoftStudio工具使用
      • 02-JasperReport集成
      • 03-JasperReport常见问题
    • 🎬JavaScript

      • 01-Node
      • 02-VuePress
      • 03-Vue组件高度宽度
      • 04-显示器和屏幕高度
      • 05-页面地址
      • 06-归纳总结
    • 🍵Java

      • 01-Java8特性
      • 02-多线程
      • 03-Jar包
      • 04-Util
      • 05-validation注解
      • 06-反编译
      • 07-try-with-resource
      • 08-ThreadLocal内存泄漏
      • 09-Jvm
      • 10-Excel
      • 11-Lombook
      • 12-条件注解
      • 13-WebMvcConfigurationSupport
      • 14-WebMvcConfigurer
      • 15-分布式锁
      • 16-Caffeine
      • 17-DynamicDatasource
      • 18-MybatisPlus
      • 19-Swagger
      • 20-BeanPostProcessor
      • 21-Bean初始化
      • 22-ConfigurableApplicationContext
      • 23-常用注解
      • 24-ApplicationListener
      • 25-JavaDoc
      • 26-Spring-Cache
      • 27-StopWatch耗时统计
      • 28-Word
      • 29-Druid
      • 30-OpenFeign
      • 31-反射相关
      • 32-Fastjson
      • 33-Yaml
  • 🏢服务器

    • 💻Linux

      • 01-Linux常用命令
      • 02-Linux脚本汇总
      • 03-Yum源
      • 04-Debian
      • 05-Ubuntu
    • 🐋Docker

      • 01-Docker常用命令
      • 02-Dockerfile
      • 03-Swarm
      • 04-Stack
      • 05-Docker常见问题
      • 06-DockerCompose
      • 07-Docker应用用汇总
      • 08-Kasm
      • 09-Rustdesk
    • 🌐Nginx

      • 01-Nginx
  • 🏩数据相关

    • 📈数据库

      • 01-Mysql
      • 02-Clickhouse
      • 03-Doris
      • 04-DRDS
    • 📉Kettle

      • 01-入门
      • 02-js脚本
      • 03-优化
      • 04-连接组件
      • 05-参数
      • 06-工具
      • 07-日志
      • 08-流程组件
      • 09-输入组件
      • 10-输出组件
      • 11-转换组件
      • 12-驱动
  • 🏬管理工具

    • 🎨Git

      • 01-Git使用
    • 📝Maven

      • 01-Maven使用
      • 02-Maven配置
    • 🎯Jenkins

      • 01-Jenkins部署
      • 02-Jenkisn常见问题
  • 🏯书籍笔记

    • 01-设计模式之禅
    • 02-领域驱动设计
    • 03-JavaScript高级程序设计
  • 🏦其他

    • 🍓树莓派

      • 01-RaspBerry
    • 📘Markdown

      • 01-Markdown语法
      • 02-Markdown表情
      • 03-Markdown代码块语言对照
    • 📇其他

      • 01-HTML XML 转义
      • 02-GitHub
      • 03-Idea
      • 04-Nmon
      • 05-Windows
      • 06-WinSw

Git 使用

目录

  • 基本命令
    • 初始化
    • 添加文件
    • 添加标签
    • 推送标签
    • 删除本地标签
    • 删除远端标签
    • 删除文件
    • 提交
    • 查看git库的状态
    • 比较
    • 查看日志
    • 版本回退
    • 查看命令历史
  • 分支管理
    • 查看分支
    • 创建分支
    • 切换分支
    • 创建分支并切换到创建的分支
    • 合并某分支的内容到当前分支
    • 删除分支
    • 查看分支合并图
  • git远端库相关
    • 添加远端仓库
    • 移除远端仓库
    • 将本地仓库内容推送到远端仓库
    • 从远端库更新内容到本地
    • 从远程仓库抓取数据
    • 别名
  • 1. 没有参数的情况
  • 2. 一个参数的情况
  • 3. 两个参数的情况
  • 切换分支时报错: error: cannot stat ‘file’: Permission denied
  • 解决冲突
  • git 撤销已经push的记录
  • .gitignore文件并不生效
  • git撤销commit
  • commit注释修改
  • git SSL certificate problem: unable to get local issuer certificate
  • TLS certificate verification has been disabled!
  • git add回退
  • remote: The project you were looking for could not be found

基本命令

初始化

创建一个git仓库,创建之后就会在当前目录生成一个.git的文件

git init

添加文件

把文件添加到缓冲区

git add filename

添加所有文件到缓冲区(从目前掌握的水平看,和后面加“.”的区别在于,加all可以添加被手动删除的文件,而加“.”不行)

git add .
git add --all 或 git add -A

添加标签

git tag -a "标签名" -m "标签注释"

推送标签

git push origin "标签名"

删除本地标签

git tag -d 标签名

删除远端标签

git push origin :refs/tags/标签名

删除文件

git rm filename

提交

提交缓冲区的所有修改到仓库(注意:如果修改了文件但是没有add到缓冲区,也是不会被提交的)

git commit -m "提交的说明"

commit可以一次提交缓冲区的所有文件

查看git库的状态

未提交的文件,分为两种,add过已经在缓冲区的,未add过的(git bash中绿色内容)

git status

比较

如果文件修改了,还没有提交,就可以比较文件修改前后的差异

git diff filename

查看暂存区文件和上次提交的快照之间的差异

git diff --cached

显示出branch1和branch2中差异的部分

git diff branch1 branch2 --stat

显示指定文件的详细差异

git diff branch1 branch2 具体文件路径

显示出所有有差异的文件的详细差异

git diff branch1 branch2

查看日志

git log

查看branch1分支有,而branch2中没有的log

git log branch1 ^branch2

查看branch2中比branch1中多提交了哪些内容, 注意,列出来的是两个点后边(此处即dev)多提交的内容。

git log branch1..branch2

不知道谁提交的多谁提交的少,单纯想知道有什么不一样

git log branch1...branch2

在上述情况下,在显示出每个提交是在哪个分支上,注意 commit 后面的箭头,根据我们在 –left-right branch1…branch2 的顺序,左箭头 < 表示是 branch1 的,右箭头 > 表示是branch2的。

git log -lefg-right branch1...branch2

版本回退

git reset

第一种用法:回退到上一个版本(HEAD代表当前版本,有一个^代表上一个版本,以此类推)

git reset --hard HEAD^

第二种用法:回退到指定版本(其中d7b5是想回退的指定版本号的前几位)

git reset --hard d7b5

第三种用法:回退到当前最高版本

git reset --hard HEAD

查看命令历史

查看仓库的操作历史

git reflog

分支管理

查看分支

git branch

查看本地所有分支

git branch -a

查看远端详情

git remote show origin

分支跟踪信息

git branch -vv

创建分支

git branch 分支名

切换分支

git checkout 分支名

快速切换到上一个分支

git checkout @{-1}

快速切换到上一个分支简化写法

git checkout -

创建分支并切换到创建的分支

git checkout -b 分支名

合并某分支的内容到当前分支

git merge 分支名

合并时难免有冲突 #调用图形化工具解决冲突

git mergetool

删除分支

删除前检查merge状态(其与上游分支或者与head)

git branch -d 分支名

直接删除

git branch -D 分支名

查看分支合并图

git log --graph

git远端库相关

添加远端仓库

git remote add origin git://127.0.0.1/abc.git

移除远端仓库

git remote remove origin移除远端仓库

将本地仓库内容推送到远端仓库

-u 表示第一次推送master分支的所有内容,后面再推送就不需要-u了,跟commit的区别在于一个是提交到本地仓库,一个是提交到远程仓库

git push -u origin master

从远端库更新内容到本地

取回远程仓库的变化,并与本地分支合并

git pull [remote] [branch]

git pull 命令用来更新代码,该命令相当于git fetch 和 git merge 的组合。

从远程仓库抓取数据

git fetch [remote-name]

fetch 命令只是将远端的数据拉到本地仓库,并不自动合并到当前工作分支

别名

$ git config alias.st  "status"

.后面的字符,代表将来要简写的命令。双引号内的字符,代表着原来命令

检查配置信息

$ git config --list

可以通过输入 git config: 来检查 Git 的某一项配置

$ git config user.name

用vim编辑配置

$ git config –e

克隆现有的仓库

克隆仓库的命令是 git clone 。 比如,要克隆 Git 的链接库 libgit2,可以用下面的命令:

$ git clone https://github.com/libgit2/libgit2

这会在当前目录下创建一个名为 “libgit2” 的目录,并在这个目录下初始化一个 .git 文件夹, 从远程仓库拉取下所有数据放入 .git 文件夹,然后从中读取最新版本的文件的拷贝。 如果你进入到这个新建的 libgit2 文件夹,你会发现所有的项目文件已经在里面了,准备就绪等待后续的开发和使用。 如果你想在克隆远程仓库的时候,自定义本地仓库的名字,你可以通过额外的参数指定新的目录名:

$ git clone https://github.com/libgit2/libgit2 mylibgit

这会执行与上一条命令相同的操作,但目标目录名变为了 mylibgit。

检查当前文件状态

可以用 git status 命令查看哪些文件处于什么状态。 如果在克隆仓库后立即使用此命令,会看到类似这样的输出:

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean

跟踪新文件

$ git add README

此时再运行 git status 命令,会看到 README 文件已被跟踪,并处于暂存状态:

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
(use "git restore --staged <file>..." to unstage)

    new file:   README

只要在 Changes to be committed 这行下面的,就说明是已暂存状态。 如果此时提交,那么该文件在你运行 git add 时的版本将被留存在后续的历史记录中。 你可能会想起之前我们使用 git init 后就运行了 git add 命令,开始跟踪当前目录下的文件。 git add 命令使用文件或目录的路径作为参数;如果参数是目录的路径,该命令将递归地跟踪该目录下的所有文件。

暂存已修改的文件

现在我们来修改一个已被跟踪的文件。 如果你修改了一个名为 CONTRIBUTING.md 的已被跟踪的文件,然后运行 git status 命令,会看到下面内容:

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

new file:   README

Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

    modified:   CONTRIBUTING.md

文件 CONTRIBUTING.md 出现在 Changes not staged for commit 这行下面,说明已跟踪文件的内容发生了变化,但还没有放到暂存区。 要暂存这次更新,需要运行 git add 命令。 这是个多功能命令:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等。 将这个命令理解为“精确地将内容添加到下一次提交中”而不是“将一个文件添加到项目中”要更加合适。 现在让我们运行 git add 将“CONTRIBUTING.md”放到暂存区,然后再看看 git status 的输出:

$ git add CONTRIBUTING.md
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

new file:   README
    modified:   CONTRIBUTING.md

现在两个文件都已暂存,下次提交时就会一并记录到仓库。 假设此时,你想要在 CONTRIBUTING.md 里再加条注释。 重新编辑存盘后,准备好提交。 不过且慢,再运行 git status 看看:

$ vim CONTRIBUTING.md
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

new file:   README
modified:   CONTRIBUTING.md

Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

    modified:   CONTRIBUTING.md

怎么回事? 现在 CONTRIBUTING.md 文件同时出现在暂存区和非暂存区。 这怎么可能呢? 好吧,实际上 Git 只不过暂存了你运行 git add 命令时的版本。 如果你现在提交,CONTRIBUTING.md 的版本是你最后一次运行 git add 命令时的那个版本,而不是你运行 git commit 时,在工作目录中的当前版本。 所以,运行了 git add 之后又作了修订的文件,需要重新运行 git add 把最新版本重新暂存起来:

$ git add CONTRIBUTING.md
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

new file:   README
    modified:   CONTRIBUTING.md

忽略文件

.gitignore 文件的例子:

# 忽略所有的 .a 文件
*.a

# 但跟踪所有的 lib.a,即便你在前面忽略了 .a 文件
!lib.a

# 只忽略当前目录下的 TODO 文件,而不忽略 subdir/TODO
/TODO

# 忽略任何目录下名为 build 的文件夹
build/

# 忽略 doc/notes.txt,但不忽略 doc/server/arch.txt
doc/*.txt

# 忽略 doc/ 目录及其所有子目录下的 .pdf 文件
doc/**/*.pdf

提交更新

现在的暂存区已经准备就绪,可以提交了。 在此之前,请务必确认还有什么已修改或新建的文件还没有 git add 过, 否则提交的时候不会记录这些尚未暂存的变化。 这些已修改但未暂存的文件只会保留在本地磁盘。 所以,每次准备提交前,先用 git status 看下,你所需要的文件是不是都已暂存起来了, 然后再运行提交命令 git commit:

$ git commit

这样会启动你选择的文本编辑器来输入提交说明。 也可以在 commit 命令后添加 -m 选项,将提交信息与命令放在同一行,如下所示:

$ git commit -m "Story 182: Fix benchmarks for speed"

跳过使用暂存区域

尽管使用暂存区域的方式可以精心准备要提交的细节,但有时候这么做略显繁琐。 Git 提供了一个跳过使用暂存区域的方式, 只要在提交的时候,给 git commit 加上 -a 选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤:

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   CONTRIBUTING.md

no changes added to commit (use "git add" and/or "git commit -a")
$ git commit -a -m 'added new benchmarks'
[master 83e38c7] added new benchmarks
 1 file changed, 5 insertions(+), 0 deletions(-)

移除文件

要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除(确切地说,是从暂存区域移除),然后提交。 可以用 git rm 命令完成此项工作,并连带从工作目录中删除指定的文件,这样以后就不会出现在未跟踪文件清单中了。 如果只是简单地从工作目录中手工删除文件,运行 git status 时就会在 “Changes not staged for commit” 部分(也就是 未暂存清单)看到:

$ rm PROJECTS.md
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

deleted:    PROJECTS.md

no changes added to commit (use "git add" and/or "git commit -a")

然后再运行 git rm 记录此次移除文件的操作:

$ git rm PROJECTS.md
rm 'PROJECTS.md'
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

    deleted:    PROJECTS.md

下一次提交时,该文件就不再纳入版本管理了。 如果要删除之前修改过或已经放到暂存区的文件,则必须使用强制删除选项 -f(译注:即 force 的首字母)。 这是一种安全特性,用于防止误删尚未添加到快照的数据,这样的数据不能被 Git 恢复。 另外一种情况是,我们想把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中。 换句话说,你想让文件保留在磁盘,但是并不想让 Git 继续跟踪。 当你忘记添加 .gitignore 文件,不小心把一个很大的日志文件或一堆 .a 这样的编译生成文件添加到暂存区时,这一做法尤其有用。 为达到这一目的,使用 --cached 选项:

$ git rm --cached README

git rm 命令后面可以列出文件或者目录的名字,也可以使用 glob 模式。比如:

$ git rm log/\*.log

注意到星号 * 之前的反斜杠 \, 因为 Git 有它自己的文件模式扩展匹配方式,所以我们不用 shell 来帮忙展开。 此命令删除 log/ 目录下扩展名为 .log 的所有文件。 类似的比如:

$ git rm \*~

该命令会删除所有名字以 ~ 结尾的文件。

修改密码凭证

查看当前用户名、邮箱、密码

git config user.name
git config user.email
git config user.password

修改用户名、邮箱、密码方式

git config --global user.name "xxx(新的用户名)"
git config --global user.email "123456@163.com(新的邮箱)"
git config --global user.password "123456(新的密码)"

移动文件

不像其它的 VCS 系统,Git 并不显式跟踪文件移动操作。 如果在 Git 中重命名了某个文件,仓库中存储的元数据并不会体现出这是一次改名操作。 不过 Git 非常聪明,它会推断出究竟发生了什么,至于具体是如何做到的,我们稍后再谈。 既然如此,当你看到 Git 的 mv 命令时一定会困惑不已。 要在 Git 中对文件改名,可以这么做:

$ git mv file_from file_to

它会恰如预期般正常工作。 实际上,即便此时查看状态信息,也会明白无误地看到关于重命名操作的说明:

$ git mv README.md README
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

    renamed:    README.md -> README

其实,运行 git mv 就相当于运行了下面三条命令:

$ mv README.md README
$ git rm README.md
$ git add README

如此分开操作,Git 也会意识到这是一次重命名,所以不管何种方式结果都一样。 两者唯一的区别是,mv 是一条命令而非三条命令,直接用 git mv 方便得多。 不过有时候用其他工具批处理重命名的话,要记得在提交前删除旧的文件名,再添加新的文件名。

版本

git --version

升级

git update-git-for-windows

本地项目上传至gitee仓库

// 初始化git
git init

// 将本地代码库与远程代码库相关联
git remote add origin https://gitee.com/ln_mars/spring-boot-mars

git add -A
git pull
git pull origin master

尚未推送到远程的提交

git cherry 找到本地提交列表中,尚未推送到远程的提交

1. 没有参数的情况

git cherry 默认比较HEAD本地分支和远程分支, 即当前分支和当前分支追踪的远程分支 如果存在差异,比较结果如下

+ 717cbc128c0e640f4f93ca8ad1118bd7f79ac728
+ f92324d7c3f3a47afbbb4c3877b323320d2871d4
+ edfaaede19bd2929b10505291266c772e9d1c934
+ fa3100796735f970f6fb94d828a3e463fe5c6731
+ be947b5a36a2102cea16c816b3b8fc8a2134ca63
+ 31bb0cf8f7131be927cb023d31ee16dcd0639060
+ c94061ea1ac16ebfe8e6388cb351a4c9329965d1

git cherry -v 可以展示出提交的注释信息

+ 717cbc128c0e640f4f93ca8ad1118bd7f79ac728 由于适应前端解析问题,返回一个string类型的userId
+ f92324d7c3f3a47afbbb4c3877b323320d2871d4 返回签到记录
+ edfaaede19bd2929b10505291266c772e9d1c934 读取plist配置获取默认背景逻辑编码
+ fa3100796735f970f6fb94d828a3e463fe5c6731 读取plist配置获取默认背景逻辑编码
+ be947b5a36a2102cea16c816b3b8fc8a2134ca63 harvest之后返回decoration;重命名;
+ 31bb0cf8f7131be927cb023d31ee16dcd0639060 读取plist配置获取默认背景逻辑编码
+ c94061ea1ac16ebfe8e6388cb351a4c9329965d1 等级自动判断

2. 一个参数的情况

git cherry -v origin/master可以比较本地HEAD分支和远程master分支之间的差别

+ 1f05a74c9a92e0faf5da96b17a7a15aa6c6e26e7 修复update的SQL错误
+ ad78159f828a148c3d1581b44e2b32cb45464031 修复SQL错误
+ 9d8a7471fb9408d7738b3a43f4f56a159619bfb0 增加逻辑:每次修改周期,保存一次未来提醒记录
+ d618e16338d354830cb2ff2a0208d1502e705941 修复设置以前的日期时候可能导致的数组越界BUG
+ 21d980972e6bcd73270d31b08852a6f62e72465c 预置推送消息增加推送人ID
+ 741c64ef5f396dee29972e8f0684892b373f6aa7 修复SQL错误

git cherry -v origin/master 可以比较本地HEAD分支和远程master分支之间的差别,等同于git cherry -v origin/master HEADgit cherry -v master 可以比较本地HEAD分支和本地master分支之间的差别,等同于git cherry -v master HEAD

3. 两个参数的情况

git cherry -v origin/master asa 比较本地的asa分支和远程master的差别 git cherry -v master asa 比较本地asa分支和本地master分支之间的差别 git cherry -v origin/master origin/asa 比较远程asa分支和远程master的差别 git cherry -v master origin/asa 比较远程asa分支和本地master的差别。

gitlab fork项目更新

  1. 查看目前仓库可以远程更新的信息
git remote -v
  1. 配置一个远程更新链接,要拥有git仓库访问权限的
git remote add upstream git@github.com:xxx/xxx.git
  1. 拉取远程仓库的代码
git fetch upstream
  1. 合并远程仓库的代码
git merge upstream/master
  1. 把远程仓库的代码作为新源提交到自己的服务器仓库中
git push

常见问题

切换分支时报错: error: cannot stat ‘file’: Permission denied

$ git checkout f-wangxiaoquan-uiDev
error: cannot stat 'src/modules/mbs/baseinfo/empmgt/emp-insu-reg': Permission denied
error: cannot stat 'src/modules/mbs/baseinfo/empmgt/emp-insu-reg': Permission denied
error: cannot stat 'src/modules/mbs/baseinfo/empmgt/emp-insu-reg': Permission denied

error: cannot stat ‘file’: Permission denied 解决方法:退出编辑器、浏览器、资源管理器等,然后再切换就可以了。

解决冲突

1.退出合并状态

git merge --abort

2.本地解决冲突 查看本地状态可以看到哪些文件需要处理

git status

3.将解决冲突的文件添加到本地暂存区

git add filename

git commit -m ”冲突“

git 撤销已经push的记录

1.查看log

git log

2.回退本地

git reset id

3.强行推到远程仓库

git push -f

.gitignore文件并不生效

git rm -r --cached .
git add .
git commit -m 'update .gitignore'

git撤销commit

修改了本地的代码,然后使用:

git add file
git commit -m '修改原因'

执行commit后,还没执行push时,想要撤销这次的commit,该怎么办?

git reset --soft HEAD^

这样就成功撤销了commit,如果想要连着add也撤销的话,–soft改为–hard(删除工作空间的改动代码) 命令详解: HEAD^ 表示上一个版本,即上一次的commit,也可以写成HEAD~1 如果进行两次的commit,想要都撤回,可以使用HEAD~2 –soft 不删除工作空间的改动代码 ,撤销commit,不撤销git add file –hard 删除工作空间的改动代码,撤销commit且撤销add

commit注释修改

git commit --amend

这时候会进入vim编辑器,修改完成你要的注释后保存即可。

git SSL certificate problem: unable to get local issuer certificate

原因:由于没有配置信任的服务器HTTPS验证。默认,cURL被设为不信任任何CAs,就是说,它不信任任何服务器验证 解决: 影响范围是系统当前用户

git config --global http.sslVerify false

全局所有用户

git config --system http.sslverify false

当前仓库

git config http.sslverify false

TLS certificate verification has been disabled!

原因:缺少了安全认证 解决:git bash下执行

git config --global http.sslVerify true

git add回退

#首先看看哪些文件加进去了  
git status

#回退git add所有文件  
git reset HEAD

#回退部分文件
git reset HEAD file

remote: The project you were looking for could not be found

解决:在自己的项目路径上加上自己的用户名。(输入密码后即拉取代码成功)

git clone http://用户名@125.01.02.03:10086/test/xiangmu.git
Edit this page
Last Updated:
Contributors: wangxiaoquan