git 常用命令补充

1.初始化配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#配置用户名
git config --global user.name "***"
#配置邮箱
git config --global user.email "***"

#----下面的根据情况配置-----
#不配置下载代码可能会出现SSL安全验证问题,可以关闭SSL安全验证
git config --global http.sslVerift false
#查看当前配置
git config --list
#提交时转换为LF,拉去时转换为CRLF
onfig --global core.autocrlf true
#提交时转换为linux的结尾符,拉取得时候不转换
git config --global core.autocrlf input
#添加远程仓库(ssh地址)
git remote add origin

2.拉取代码

1
2
3
4
#可能存在子模块,递归拉取
git clone --recursive 'url'
#更新代码
git pull

3.分支操作

1
2
3
4
5
6
7
8
9
#创建本地分支(他会根据基于你当前的分支创建新的分支,
也就是说当前的你的分支如果有代码的话你创建的新分支是不干净的)
git checkout -b '目录'/'分支名'
#查看当前目录下的所有分支
git branch -a
#切换分支
git checkout '需要切换的峰值名称'
#删除分支 如果需要删除拥有未提交代码的分支需要把-d改成-D
git branch -d '删除分支名称'

4代码提交

1
2
3
4
5
6
7
8
9
10
11
12
13
#提交代码到本地分支
#需要先进行git add . 才能进行下面的操作
git add.
git commit -m '分支名称'

#显示提交内容
git diff

#推送代码到远程git仓库,再推送的时候会在远程仓库创建一个git分支,然后在远程仓库发起合并请求.
#后续的每次推送都会远程仓库创建的那个对应分支上面
git push
#强制推送,会覆盖之前的对应分支提交的代码
git push -f

5.配置代理

1
2
3
4
5
6
7
8
9
10
11
[user]
name = xxxx
email = xxxxx@xxxx
[http "https://github.com"]
proxy = http://127.0.0.1:7890
[http "http://github.com"]
proxy = http://127.0.0.1:7890
[credential "https://gitee.com"]
provider = generic
[http]
sslverify = false

6. gitignore规则

语法

1
2
3
4
5
6
'#'作为注释
'/'开头表示目录
'*'通配符
'?'匹配单个字符
'[]'包含单个字符的匹配规则
'!'忽略目录

用法

1
2
3
4
5
6
*.txt  ,*.xls  表示过滤某种类型的文件
target/ :表示过滤这个文件夹下的所有文件
/test/a.txt ,/test/b.xls 表示指定过滤某个文件下具体文件
!*.java , !/dir/test/ !开头表示不过滤
*.[ab] 支持通配符:过滤所有以.a或者.b为扩展名的文件
/test 仅仅忽略项目根目录下的 test 文件,不包括 child/test等非根目录的test目录

.gitignore

有些时候我们不想把某些文件纳入版本控制中,比如数据库文件,临时文件等

在主目录下建立”.gitignore”文件,此文件有如下规则:

  1. 忽略文件中的空行或以井号(#)开始的行将会被忽略。
  2. 可以使用Linux通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符,方括号 ([abc])代表可选字符范围,大括号({string1,string2,…})代表可选的字符串等。
  3. 如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。
  4. 如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不 忽略。
  5. 如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件 (默认文件或目录都忽略)。
1
2
3
4
5
6
#为注释
.txt #忽略所有 .txt结尾的文件
!lib.txt #但lib.txt除外
/temp #仅忽略项目根目录下的TODO文件,不包括其它目录temp
build/ #忽略build/目录下的所有文件
doc/*.txt #会忽略 doc/notes.txt 但不包括 doc/server/arch.txt