对git肯定不陌生,会用tortoiseGit,也会用idea,但是会用git的命令吗,发现自己啥都不会,实在不像话。
先从最简单的开始。
git add
不要小看这个命令,直接也是无法使用的。
报错:
On branch xxx
Your branch is up to date with 'origin/xxx'.
Changes not staged for commit:
modified: custom/src/main/java/com/test/TTT/.java
no changes added to commit
是需要先添加:
git add .
然后就可以了。
那么知识又来了,git add命令也不能乱用(见本文git add命令)。
git add
git add
添加指定的文件到暂存区
注:这个命令也不简单,文件的路径怎么拿?
如果路径不对会报错:
命令:
git add CustomUtils.java
返回:
fatal: pathspec 'CustomUtils.java' did not match any files
所以,最好结合 git ls-files | grep CustomUtils
来使用,就能拿到完整的文件路径,再提交即可。
git add -A
(git add --all 的缩写)添加所有变更的文件到暂存区
git add -u
(git add --update的缩写)添加被修改(modified)和被删除(deleted)文件,不包括新文件(new)
git add *
添加新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件
git add .(推荐)
会把本地所有untrack的文件都加入暂存区,并且会根据.gitignore做过滤,但是git add * 会忽略.gitignore把任何文件都加入.(推荐,一般用这个就可以)
一般用这个就可以。
git diff
提交前看有哪些改变,用这个命令就行。
上下键可以翻动内容,也支持/
(左斜杠搜索等)。
git commit
git commit -m “提交内容”
git commit 提交乱码
设置下全局编码即可。
后面不带配置是查看:
git config --global i18n.commit.encoding
git config --global i18n.log.encoding
带配置是设置:
git config --global i18n.commit.encoding utf-8
git config --global i18n.log.encoding utf-8
实测问题解决。
git config设置全局编码报错:error: key does not contain a section: –-global
命令:
git config –-
global i18n.commitencoding utf-8
这就搞笑了,还以为–global不能在命令行中使用呢,仔细一看是第一个横岗没写对。
git注释的重要性
首先强调一点,提交的时候必须写注释,必须写注释,必须写注释,重要的事情说三遍。
因为如果不写注释,过段时间查看log的时候连自己也看不懂每次提交干了什么。 这太可怕了…
例如模板为:
项目名:本次提交的功能名
改动1
改动2
内容为:
阿里飞天: 基础框架搭建
1、引入了spring-cloud
2、引入了xx-job
注释要本着至少能把事情说清楚,尽量全的原则。
如果代码量不多,甚至可以细化到哪个类的哪个方法,甚至哪行。
修改用户名、邮箱,以及重设配置
命令如下:
查看用户名和邮箱:
git config user.name
git config user.email
修改用户名和邮箱:
git config --global user.name "chushiyun@111.com"
git config --global user.email "chushiyun@111.com"
如果还是有问题,pull或者push超时问题。那么重置下密码吧,然后再输入账号密码后续就可以了。
git config --system --unset credential.helper
commit
比较常用(推荐)
查看远程地址: git remote -v
查看分支: git branch -v # 查看git分支(这个其实还好用些) git branch -a
#head指向的是当前分支
查看当前分支: git branch
查看git地址:
命令:
git --exec-path
结果:
C:/Program Files/Git/mingw64/libexec/git-core
查看git文档地址:
命令:
git --html-path
结果:
C:/Program Files/Git/mingw64/share/doc/git-doc
git.exe的几个可能的地址
为什么要整理这个呢? 因为如果直接搜索git.exe,好几个位置都可以搜索到,不知道配置哪个了。
C:\Program Files\Git\bin # 一般来说配置这个就行 但是git --exec-path返回的是C:\Program Files\Git\mingw64\libexec\git-core 这是正常的。
C:\Program Files\Git\cmd
C:\Program Files\Git\mingw64\bin
C:\Program Files\Git\mingw64\libexec\git-core
其他
文档地址
官网文档地址:
https://git-scm.com/doc
突然发现这个文档已经支持选择不同语言了,右上角的topics右边是有的。
git cheat sheet(备忘录)pdf版:
https://github.github.com/training-kit/downloads/github-git-cheat-sheet.pdf
报错
git报错 “cannot spawn ssh: No such file or directory”
git branch -v的时候报错 “cannot spawn ssh: No such file or directory”
1、环境变量添加 GIT_SSH=C:\Program Files\Git\usr\bin\ssh.exe
2、一般就可以解决了,如果还有问题,可以试下 git config --global core.longpaths true ,这个用来解决路径长度不大于260的问题。(在这里不确定有用)
配置完毕后,记得重启下idea。
git bash可以pull,idea pull 一直没反映
先确定2者配置一致,都到settings里面看看。
git bash会带git吗
一般会带的,但是再装个git也是可以的。
–表示参数
–表示参数 --表示参数 --表示参数,重要的事情说3遍。 当然也不只git,其他很多也是–表示参数。
idea中git合并分支
例如分支a 基于分支a创建分支b。
分支b先提交了代码,分支a后续又提交了代码,可以合并上吗。
当然可以的。
先检出b分支,checkout a分支,本地肯定是没有的,不过没关系,pull一下就会自动将远程设置为a分支的远程。pull过来最新代码。
然后切换回a分支,右键merge b分支,发现都合并过来了,再push下,b分支远程也有了。