git基础语法(二)

1.分支管理

1.查看分支

git branch 查看本地分支

git branch -a 查看所有分支

2.创建分支         

git checkout -b xxx分支名

创建并切换分支,等价于=>git branch xxx        git checkout xxx   两个命令

和远程分支关联,第一次需执行 切换分支之后,第一次推送代码到远程仓库

git push --set-upstream origin xxx

3.切换分支

git checkout xxx分支名

4.合并分支到当前分支

git merge xxx分支名

5.删除分支

git branch -d  删除已合并的分支,有为合并代码不允许删除
git branch -D 强制删除,直接删除

6.删除远程分支

git push origin --delete dev_new #删除远程分支

2.忽略文件 .gitignore

/.idea/
/target/
*.iml

作用:第一次初始化项目时 忽略文件就配置成功了,其他人正常同步代码。

已提交的稳健如何恢复忽略

 git rm --cached 文件
 git rm --cached -r 文件夹
 git rm --cached -r .

3.标签

发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。

Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(跟分支很像对不对?但是分支可以移动,标签不能移动),所以,创建和删除标签都是瞬间完成的。

1.创建和查看

git log --pretty=oneline  --abbrev-commit  #简化版本号 行格式显示
git tag  v1.0 #创建一个v1.0的标签
git tag v0.9 f52c633   #基于某一个版本,创建一个v0.9的标签
#基于某一个版本,添加备注,创建一个v0.1的标签
git tag -a v0.1 -m "version 0.1 released" 1094adb  
git tag #查看标签列表
git show <tagname> #查看某个标签详情
git checkout tagname #切标签

2.同步和删除

git tag -d v0.1 #删除本地分支
git push origin v1.0 #推送某个分支到远程
git push origin --tags #推送所有分支到远程

3.删除远程标签

 #先删除本地标签
 git tag -d v0.9
 #后删除远程标签
 git push origin :refs/tags/v0.9

<think>我们正在讨论Git忽略文件的语法规则。根据引用[1][2][3],Git忽略规则主要定义在.gitignore文件中,每条规则独占一行,并支持特定语法。以下是核心语法总结: ### 一、基础语法规则 1. **空行与注释** - 空行被忽略(不影响规则) - 以 `#` 开头的行是注释(如 `# 这是注释`) 2. **通配符匹配** - `*` 匹配任意字符(不包括路径分隔符 `/`) - 示例:`*.log` 忽略所有 `.log` 文件 - `?` 匹配单个字符 - 示例:`?.tmp` 忽略 `a.tmp` 但不忽略 `ab.tmp` - `[]` 匹配指定字符范围 - 示例:`[abc].txt` 忽略 `a.txt`, `b.txt`, `c.txt` - `**` 跨目录匹配(Git 2.11+) - 示例:`**/logs` 忽略所有目录下的 `logs` 文件夹 3. **路径限定符** - 规则以 `/` 开头:仅匹配项目根目录 - 示例:`/build` 仅忽略根目录下的 `build` 文件夹 - 规则以 `/` 结尾:仅忽略目录而非同名文件 - 示例:`docs/` 忽略所有 `docs` 目录,但允许 `docs` 文件存在 4. **例外规则** - 以 `!` 开头:强制包含被忽略的文件 - 示例: ```gitignore *.log # 忽略所有.log文件 !error.log # 但强制跟踪error.log ``` ### 、规则作用域示例 | 规则 | 效果说明 | |---------------------|--------------------------------------------------------------------------| | `temp/` | 忽略所有名为 `temp` 的目录(包括子目录中的 `temp`) | | `/temp` | 仅忽略根目录下的 `temp` 文件(或目录) | | `*.pyc` | 忽略所有目录中的 `.pyc` 文件 | | `!/main.pyc` | 强制跟踪被忽略的 `main.pyc`(需在忽略规则后声明) | | `config.ini` | 忽略所有位置的 `config.ini` | | `/sub/config.ini` | 仅忽略 `sub` 目录下的 `config.ini` | | `build/**/output/` | 忽略 `build` 目录下任意深度的 `output` 子目录(如 `build/a/output/`) | ### 三、特殊案例解析 ```gitignore # 案例1:忽略除指定文件外的所有日志 *.log !critical.log # 案例2:只忽略根目录下的cache目录 /cache/ # 案例3:忽略src下的临时目录但不忽略文件 src/tmp/ ``` ### 四、验证规则有效性 1. 使用命令检查忽略原因: ```bash git check-ignore -v path/to/file ``` 输出示例: ``` .gitignore:2:*.log path/to/error.log # 解释:error.log 被第2行的 *.log 规则忽略 ``` 2. 查看所有被忽略文件: ```bash git status --ignored ``` > 注意:若规则未生效,通常是因为文件已被跟踪(执行 `git rm --cached` 解决)[^1][^4]。 --- §§ 相关问题 §§ 1. 如何让 `.gitignore` 忽略隐藏文件(如 `.DS_Store`)? 2. 为什么 `!` 例外规则有时无效? 3. 如何在 Git 中忽略已跟踪文件的修改(不删除仓库文件)? </think>### Git忽略文件语法解析 根据引用资料[2][3],Git忽略文件(`.gitignore`)的语法规则如下: #### 一、基础语法规则 1. **注释与空行** - 以 `#` 开头的行是注释(如 `# 日志文件`) - 空行自动忽略 2. **通配符规则** - `*`:匹配任意字符(如 `*.log` 忽略所有日志文件) - `?`:匹配单个字符(如 `?.tmp` 忽略 `a.tmp`) - `[abc]`:字符范围(如 `temp[1-3]` 忽略 `temp1`, `temp2`) - `{a,b}`:多选项(如 `*.{log,tmp}` 忽略所有 `.log` 和 `.tmp` 文件) 3. **路径规则** - `/` 开头:仅匹配根目录 ```gitignore /build # 仅忽略根目录下的 build 文件/目录 ``` - `/` 结尾:仅忽略目录 ```gitignore cache/ # 忽略所有 cache 目录,但允许 cache 文件存在 ``` 4. **例外规则** - `!` 开头:强制包含文件 ```gitignore *.log # 忽略所有日志 !debug.log # 但保留 debug.log ``` #### 、特殊语法(引用[3]) ```gitignore **/logs # 忽略所有目录下的 logs 文件夹(包括子目录) bin/ # 忽略 bin 目录下的所有内容 !/bin/run.sh # 不忽略 bin 目录下的 run.sh !.gitignore # 必须包含 .gitignore 文件本身 ``` #### 三、作用层级差异 | 规则示例 | 作用范围 | |---------------|----------------------------------| | `/build` | 仅根目录下的 build | | `build/` | 所有位置的 build 目录 | | `docs/*.txt` | 忽略 docs/ 下的 .txt 文件 | | `docs/**/*.md`| 忽略 docs/ 及其子目录的所有 .md 文件 | #### 四、验证语法有效性 ```bash # 检查文件为何被忽略 git check-ignore -v path/to/file # 查看所有被忽略文件 git status --ignored ``` > **关键提示**:语法错误是忽略失效的常见原因,例如: > - 规则末尾缺少 `/` 导致目录被误识别为文件 > - `!` 例外规则需写在忽略规则之后 > - 路径分隔符必须使用正斜杠 `/`(Windows 同样适用) #### 五、经典示例 ```gitignore # 忽略日志和临时文件 *.log *.tmp # 忽略 node_modules 但保留 .modules 文件 node_modules/ !.modules # 忽略 build 目录但不忽略根目录的构建脚本 /build/ !/build.sh ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值