git常用
总结
一、克隆与推送
克隆仓库 git clone https://gitee.com/xxxx/git-test.git
对新项目加入版版本控制 git init -b main
查看本地仓库状态 git status
将文件加入版本库缓存区 git add
将修改提交到本地仓库 git commit
读取远程仓库相关内容 git remote -v
推送到远程仓库 git push
查看修改日志 git log
添加新角色 git config --global user.name “名字”
git config --global user.email “邮箱”
二、忽略版本追踪
基本使用
- 当第一次提交时没有添加 .gitinore文件时 则需要执行一下操作
git rm -r --cached . # 删除缓存
git add . # 重新添加所有文件
git commit -m "update" # 重新提交
git push -u origin master # 推送
- 在项目根目录创建.gitignore文件(并非一定要放在根目录,但在根目录,可以对下继目录进行控制
- 用文本编辑器打开文件,进行配置:
- 每一项配置单独占一行。
- 每行的内容为:文件/目录的名称、路径或他们的匹配模式
模式匹配
语法解释(正则)
- 空行不匹配任何文件,因此常用作分隔符(以方便阅读)
- “#”号用于注释,\表示表示转义 (如需使用实体\,则要加引号“\”)
- *可以匹配任何字符(0次或多次),?可以匹配任何字符(1次) (注意:他们都不可以匹配/)
- / 用于分隔目录
- 当 / 在开头时,表示从 .gitignore 文件所在目录开始匹配,否则,下级都将匹配
- 当 / 在末尾时,只匹配目录,否则,同名的目录和文件都将匹配
- 原先被排除的文件,使用 ! 模式后该文件将会从新被包含,但如果该文件的父级目录被排除了,那么使用!也不会再次被包含
- [] 通常用于匹配一个字符列表,如:a[mn]z 可匹配 amz、anz
- ** 用于匹配多级目录,如a/**/b 可匹配 a/b a/x/b a/x/y/b 等
案例
#注释 .gitignore的注释
*.txt 忽略所有 .txt 后缀的文件
!src.a 忽略除 src.a 外的其他文件
/todo 仅忽略项目根目录下的 todo 文件,不包括 src/todo
build/ 忽略 build/目录下的所有文件,过滤整个build文件夹;
doc/*.txt 忽略doc目录下所有 .txt 后缀的文件,但不包括doc子目录的 .txt 的文件
bin/: 忽略当前路径下的 bin 文件夹,该文件夹下的所有内容都会被忽略,不忽略 bin 文件
/bin: 忽略根目录下的 bin 文件
/*.c: 忽略 cat.c,不忽略 build/cat.c
debug/*.obj: 忽略debug/io.obj,不忽略 debug/common/io.obj和tools/debug/io.obj
**/foo: 忽略/foo, a/foo, a/b/foo等
a/**/b: 忽略a/b, a/x/b, a/x/y/b等
!/bin/run.sh 不忽略bin目录下的run.sh文件
*.log: 忽略所有 .log 文件
config.js: 忽略当前路径的 config.js 文件
/mtk/ 忽略整个文件夹
*.zip 忽略所有.zip文件
/mtk/do.c 忽略某个具体文件
检测规则是否有效
git check-ignore -v {文件或目录路径}
三、从版本库中恢复文件
1 没有add过的文件恢复
已删除/修改,未add
$ git checkout [文件名/路径]
#如 git checkout test1.txt
2 有 add 但无commit过的文件恢复
已删除/修改,已add,未commit
1. 先使用git log 查看最近一次修改的Id
2. 使用 git checkout [commitid] [文件名/路径]
#如 $ git checkout 4cb8e5a8b30e3284977f76d10a9d5a5cc5292af4 test1.txt
3 已commit过的文件,恢复到之前版本
已删除/修改,已commit
- 与第2操作一致
四、分支管理与操作
-
同时创建:仓库+分支
git init -b dev #创建仓库并指定当前分支为dev -
在现在版本仓库创建新分支
git branch cs #创建名为cs的分支,但不会切换到新分支 加 -b会在创建同时切换 -
分支重命名
git branch -m [旧分支名] [新分支名] git branch -m cs cs1 #将分支cs重命名为cs1 -
删除分支
git branch -d [分支名] #-d删除已合并过的分支 -D强制删除分支,不管是否合并过 git branch -d cs1 -
切换分支
git checkout [分支名] -
分支合并
git merge [被合并的分支名] git merge dev -
查看版本库中的分支
git branch #未commit提交的库时空的,无内容,也就无分支

浙公网安备 33010602011771号