1. 仓库操作
初始化仓库
csharp
git init
在当前目录初始化一个新的Git仓库
克隆远程仓库
bash
git clone <仓库URL> [目录名]
git clone https://github.com/user/repo.git
克隆仓库到当前目录git clone https://github.com/user/repo.git myproject
克隆仓库到myproject目录
2. 配置相关
查看配置
lua
git config --list
设置用户信息
arduino
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
设置默认编辑器
arduino
git config --global core.editor "vim"
3. 文件状态与提交
查看状态
lua
git status
git status -s # 简洁模式
添加文件到暂存区
csharp
git add <文件名>
git add . # 添加所有修改
git add -A # 添加所有修改和删除
git add -p # 交互式添加
提交更改
sql
git commit -m "提交信息"
git commit -am "提交信息" # 添加并提交所有已跟踪文件的修改
git commit --amend # 修改最后一次提交
4. 分支管理
查看分支
bash
git branch # 查看本地分支
git branch -a # 查看所有分支(本地+远程)
git branch -v # 查看分支最后提交
创建分支
xml
git branch <分支名>
git checkout -b <分支名> # 创建并切换到新分支
切换分支
csharp
git checkout <分支名>
git switch <分支名> # Git 2.23+推荐方式
合并分支
sql
git merge <分支名>
git merge --no-ff <分支名> # 禁用快进合并
删除分支
bash
git branch -d <分支名> # 删除已合并的分支
git branch -D <分支名> # 强制删除未合并的分支
5. 远程操作
查看远程仓库
git remote -v
添加远程仓库
bash
复制
下载
xml
git remote add <远程名> <仓库URL>
获取远程更新
bash
复制
下载
sql
git fetch <远程名>
git fetch --prune # 删除本地不存在的远程分支
拉取远程分支
bash
复制
下载
xml
git pull <远程名> <分支名>
git pull --rebase # 使用rebase方式拉取
推送本地分支
bash
复制
下载
perl
git push <远程名> <分支名>
git push -u <远程名> <分支名> # 设置上游分支
git push --force # 强制推送(慎用)
6. 查看历史
查看提交历史
bash
复制
下载
perl
git log
git log -p # 显示差异
git log --stat # 显示简略统计
git log --graph # 图形化显示
git log --oneline # 单行显示
git log -n 5 # 显示最近5条
git log --since="2023-01-01"
git log --author="name"
git log --grep="关键字"
查看文件修改
bash
复制
下载
bash
git diff # 工作区与暂存区差异
git diff --cached # 暂存区与最新提交差异
git diff HEAD # 工作区与最新提交差异
git diff <分支1> <分支2> # 两个分支差异
7. 撤销操作
撤销工作区修改
bash
复制
下载
bash
git checkout -- <文件名> # 撤销单个文件修改
git restore <文件名> # Git 2.23+推荐方式
撤销暂存区修改
bash
复制
下载
perl
git reset HEAD <文件名>
git restore --staged <文件名> # Git 2.23+推荐方式
回退提交
bash
复制
下载
perl
git reset --soft HEAD~1 # 撤销提交但保留修改在暂存区
git reset --mixed HEAD~1 # 撤销提交和暂存(默认)
git reset --hard HEAD~1 # 彻底丢弃提交和修改
恢复被删除的文件
bash
复制
下载
xml
git checkout <提交哈希> -- <文件名>
8. 标签管理
创建标签
bash
复制
下载
bash
git tag <标签名> # 轻量标签
git tag -a <标签名> -m "描述" # 附注标签
git tag -a v1.0 <提交哈希> # 给特定提交打标签
查看标签
bash
复制
下载
sql
git tag
git show <标签名>
推送标签
bash
复制
下载
perl
git push origin <标签名>
git push origin --tags # 推送所有标签
删除标签
bash
复制
下载
ruby
git tag -d <标签名> # 删除本地标签
git push origin :refs/tags/<标签名> # 删除远程标签
9. 高级操作
储藏更改
bash
复制
下载
perl
git stash # 储藏当前修改
git stash save "描述" # 带描述的储藏
git stash list # 查看储藏列表
git stash apply stash@{n} # 应用指定储藏
git stash pop # 应用并删除最新储藏
git stash drop stash@{n} # 删除指定储藏
git stash clear # 清除所有储藏
变基操作
bash
复制
下载
bash
git rebase <分支名> # 变基到指定分支
git rebase -i HEAD~3 # 交互式变基(修改最近3次提交)
子模块
bash
复制
下载
sql
git submodule add <仓库URL> <路径>
git submodule update --init --recursive
清理无用文件
bash
复制
下载
bash
git clean -n # 查看将被删除的文件(预演)
git clean -f # 删除未跟踪的文件
git clean -fd # 删除未跟踪的文件和目录
10. 帮助与调试
获取帮助
bash
复制
下载
bash
git help <命令>
git <命令> --help
查看命令历史
bash
复制
下载
git reflog
检查仓库完整性
bash
复制
下载
git fsck
显示忽略规则
bash
复制
下载
sql
git check-ignore -v <文件名>
这些命令涵盖了Git日常使用的大部分场景,建议根据实际需求逐步掌握。对于复杂操作,建议先在测试仓库中练习。
拉取别人的分支
基本操作步骤
-
获取最新远程分支信息
sqlgit fetch
-
查看同事的分支
cssgit branch -a
这会列出所有分支,远程分支通常以
remotes/origin/
开头 -
基于同事的分支创建本地分支
cssgit checkout -b 你的分支名 origin/同事的分支名
例如:
bashgit checkout -b feature/my-work origin/feature/colleagues-work
更完整的流程
-
确保你的本地仓库是最新的
git pull
-
创建并切换到新分支
cssgit checkout -b 你的分支名 origin/同事的分支名
-
设置上游分支(可选)
inigit branch --set-upstream-to=origin/你的分支名
-
开始开发
- 进行代码修改
- 添加更改到暂存区:
git add .
- 提交更改:
git commit -m "描述你的修改"
- 推送到远程:
git push origin 你的分支名
注意事项
-
分支命名 :最好使用清晰的命名,如
feature/yourname-description
或fix/yourname-issue
-
沟通确认:在开始前确认:
- 这是否是正确的源分支
- 是否有特定的分支命名规范
- 是否有其他流程需要遵循
-
不要直接修改同事的分支:确保你在自己的分支上工作,而不是直接在同事的分支上提交更改
-
定期同步:开发过程中定期从主分支合并最新更改到你的分支,避免后期大量冲突
关于短横线指令
常用 Git 短选项(-)及对应长选项(--)
1. 提交相关
短选项 | 长选项 | 用途 | 示例 |
---|---|---|---|
-m |
--message |
直接添加提交信息 | git commit -m "修复bug" |
-a |
--all |
提交所有已修改/删除的文件(跳过 git add ) |
git commit -a -m "快速提交" |
-v |
--verbose |
提交时显示详细差异 | git commit -v |
2. 分支相关
短选项 | 长选项 | 用途 | 示例 |
---|---|---|---|
-d |
--delete |
删除分支 | git branch -d feature/old |
-D |
无 | 强制删除未合并的分支 | git branch -D feature/experimental |
-b |
无 | 创建并切换到新分支 | git checkout -b new-feature |
-r |
--remotes |
查看远程分支 | git branch -r |
-a |
--all |
查看所有分支(本地+远程) | git branch -a |
3. 拉取/推送相关
短选项 | 长选项 | 用途 | 示例 |
---|---|---|---|
-f |
--force |
强制推送(覆盖远程分支)⚠️慎用 | git push -f origin main |
-u |
--set-upstream |
设置远程跟踪分支 | git push -u origin feature |
-p |
--prune |
删除本地不存在的远程分支 | git fetch -p |
4. 日志/查看历史
短选项 | 长选项 | 用途 | 示例 |
---|---|---|---|
-n |
--max-count |
限制日志条目数 | git log -n 5 |
-p |
--patch |
显示提交的详细差异 | git log -p |
-g |
--grep |
搜索提交信息 | git log -g "fix bug" |
-s |
--no-patch |
不显示差异,仅摘要 | git log -s |
--oneline |
无 | 单行简洁日志 | git log --oneline |
5. 合并/变基相关
短选项 | 长选项 | 用途 | 示例 |
---|---|---|---|
--no-ff |
无 | 禁用快进合并(保留合并提交) | git merge --no-ff feature |
--abort |
无 | 取消合并/变基(冲突时) | git merge --abort |
--continue |
无 | 解决冲突后继续合并/变基 | git rebase --continue |
6. 其他常用
短选项 | 长选项 | 用途 | 示例 |
---|---|---|---|
-q |
--quiet |
静默模式(减少输出) | git pull -q |
-v |
--verbose |
详细模式(更多输出) | git fetch -v |
--dry-run |
无 | 模拟执行(不真正修改) | git merge --dry-run feature |
总结
-
-m
、-d
等是 短选项 ,--message
、--delete
是 长选项,功能相同,但长选项更易读。 -
常用场景:
- 提交 :
-m
(提交信息)、-a
(跳过git add
) - 分支 :
-d
(删除)、-b
(创建并切换) - 推送 :
-u
(设置上游)、-f
(强制推送,慎用) - 日志 :
-p
(查看差异)、--oneline
(简洁日志)
- 提交 :
如果是团队协作,建议多用 --
长选项(如 git commit --message
),这样代码审查时更清晰!