如果你从事软件开发,那么你极有可能使用Git(或其他版本控制系统)。以下详细介绍了14个Git功能,这些功能对于新手来说可能并不立即显而易见。
1.
git add
中的正则表达式应用
•
git add
命令接受正则表达式,用于选择性地暂存文件。• 示例:
git add *.py
暂存所有以.py
结尾的文件。• 示例:
git add hello*.py
暂存所有以"hello"开头并以.py
结尾的文件。
2. .gitignore中的正则表达式
•
.gitignore
文件指定要从Git跟踪中排除的文件和目录。• 可以通过列出文件名来忽略单个文件。
• 正则表达式支持基于模式的排除。
• 示例:将
hello*.py
添加到.gitignore
会忽略所有匹配该模式的文件。• 使用
git status
会显示在.gitignore
文件中匹配表达式的文件不被追踪。
3.
git push origin HEAD
用于简化分支推送•
git push origin HEAD
提供了一个简洁的替代方案,用于替代git push origin longass_branch_name
。• 这简化了从冗长的分支名称推送更改。
• 无需键入完整的分支名称,
HEAD
引用当前分支。
4.
git checkout ABC
和git checkout -b ABC
之间的区别•
git checkout ABC
切换到名为ABC的现有分支。•
git checkout -b ABC
创建一个名为ABC的新分支并切换到该分支。
5. 理解
git merge
功能•
git merge
将另一个分支的更改集成到当前分支中。• 它有效地将远程分支的更改“下载”到本地分支中。
• 示例:
git merge testbranch
将testbranch
中的更改合并到当前分支中。• merge 命令的输出将会显示已经被创建或者修改的文件。
6. 用于冲突缓解的先发制人的
git pull
• 在开始新的功能开发之前执行
git pull
可以最大限度地减少合并冲突。• 合并冲突是由多个开发人员同时修改同一文件引起的。
• 先发制人的
git pull
确保本地代码库是最新的,并降低潜在冲突的复杂性。
7. 分支重命名:
main
与master
• 在许多组织中,术语“master”正在被“main”取代,以促进包容性术语。
• 许多CICD管道可能需要修改,以反映这一变化。
8. 合并后分支删除
• 成功合并后删除分支可以防止未使用的分支累积。
• 不必要的分支会使
.git/refs/heads
目录混乱,从而可能影响性能。• 在合并分支后删除分支是一种良好的做法。
9.
git commit --amend
用于提交修改•
git commit --amend
修改最近一次提交,而不是创建新的提交。• 这通过将相关更改合并到单个提交中来维护更清晰的提交历史记录。
• 当在提交后进行其他更改时,这非常有用。
10.
git log --oneline
用于简洁的提交历史记录•
git log --oneline
以紧凑的单行格式显示提交历史记录。• 这有助于高效浏览提交日志。
11. 理解
git rebase
•
git rebase
通过更改分支的基准来“重写”提交历史记录。• 它模拟从目标分支上的较新提交进行分支。
•
git rebase <base>
将当前分支重新定位到指定的基准上。• 图形界面可以提供拖放式重新定位功能。
12.
git reset
用于本地更改还原•
git reset
撤销本地更改,例如暂存的文件。• 它还原
git add
的效果。
13.
git reset --soft <commit_id>
用于提交还原和更改保留•
git reset --soft <commit_id>
还原到指定的提交,同时在本地保留后续更改。• 在还原提交后进行的更改仍然可以访问。
• 在使用此命令重写历史记录后,需要
git push --force
。
14.
git reset --hard <commit_id>
用于提交还原和更改丢弃•
git reset --hard <commit_id>
还原到指定的提交并丢弃所有后续更改。• 在还原提交后进行的更改将被永久删除。
• 在使用此命令重写历史记录后,需要
git push --force
。
结论
本说明旨在增强您对Git高级功能的理解。