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文件(并非一定要放在根目录,但在根目录,可以对下继目录进行控制
  • 用文本编辑器打开文件,进行配置:
    1. 每一项配置单独占一行。
    2. 每行的内容为:文件/目录的名称、路径或他们的匹配模式

模式匹配

语法解释(正则)

  1. 空行不匹配任何文件,因此常用作分隔符(以方便阅读)
  2. “#”号用于注释,\表示表示转义 (如需使用实体\,则要加引号“\”)
  3. *可以匹配任何字符(0次或多次),?可以匹配任何字符(1次) (注意:他们都不可以匹配/)
  4. / 用于分隔目录
    1. 当 / 在开头时,表示从 .gitignore 文件所在目录开始匹配,否则,下级都将匹配
    2. 当 / 在末尾时,只匹配目录,否则,同名的目录和文件都将匹配
  5. 原先被排除的文件,使用 ! 模式后该文件将会从新被包含,但如果该文件的父级目录被排除了,那么使用!也不会再次被包含
  6. [] 通常用于匹配一个字符列表,如:a[mn]z 可匹配 amz、anz
  7. ** 用于匹配多级目录,如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操作一致

四、分支管理与操作

  1. 同时创建:仓库+分支

    git init -b dev   #创建仓库并指定当前分支为dev
    
  2. 在现在版本仓库创建新分支

    git branch cs    #创建名为cs的分支,但不会切换到新分支 加 -b会在创建同时切换
    
  3. 分支重命名

    git branch -m [旧分支名] [新分支名]
    git branch -m cs cs1    #将分支cs重命名为cs1
    
  4. 删除分支

    git branch -d [分支名]    #-d删除已合并过的分支 -D强制删除分支,不管是否合并过
    git branch -d cs1
    
  5. 切换分支

    git checkout [分支名]
    
  6. 分支合并

    git merge [被合并的分支名]
    git merge dev
    
  7. 查看版本库中的分支

    git branch    #未commit提交的库时空的,无内容,也就无分支
    
posted @ 2023-03-29 12:30  Ellixon  阅读(19)  评论(0)    收藏  举报