Git 使用技巧

常用配置设置

正确配置你的用户信息

GitHub 通过你的 ~/.gitconfig 文件提供的信息来追踪你的更改。如果你在多台机器上工作且 ~/.gitconfig 未正确配置,你很可能会得到重复的提交和混乱的历史记录。你需要根据你的 GitHub 凭证修改以下行。

复制代码
[user]
	name = 你的姓名
	email = 你的有效邮箱

正确配置你的 difftool 和 mergetool。

difftool 和 mergetool 是 Git 分别在执行差异比较或冲突解决操作时会运行的软件。

复制代码
[difftool "opendiff"]
	cmd = /usr/bin/opendiff \"$LOCAL\" \"$REMOTE\" -merge \"$MERGED\" | cat
[diff]
	tool = opendiff
[merge]
	tool = opendiff

为最常用的命令创建别名。

你会发现每天会多次使用相同的 Git 命令。为最常用的命令创建别名可以每天节省宝贵的时间。

复制代码
[alias]
	st = status
	ci = commit
	br = branch
	co = checkout
	ds = diff --staged
	changes = log -n1 -p --format=fuller
	amend = commit --amend -C HEAD
	undo = clean -f -d
	undoci = reset HEAD~1
	unstage = reset HEAD --
	lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
	ls = log --pretty=format:\"%C(yellow)%h %C(blue)%ad%C(red)%d %C(reset)%s%C(green) [%cn]\" --decorate --date=short
	lg-full = log --name-status --pretty=fuller

速查表

创建

操作 命令
克隆一个现有仓库 $ git clone ssh://user@domain.com/repo.git
创建一个新的本地仓库 $ git init

本地更改

操作 命令
查看工作目录中已更改的文件 $ git status
查看已跟踪文件的更改内容 $ git diff
将所有当前更改添加到下一次提交 $ git add .
将 <文件> 中的部分更改添加到下一次提交 $ git add -p <文件>
提交所有已跟踪文件中的本地更改 $ git commit -a
提交之前已暂存的更改 $ git commit
修改最后一次提交(不要修改已发布的提交!) $ git commit --amend

提交历史

操作 命令
显示所有提交,从最新的开始 $ git log
显示特定文件随时间的变化 $ git log -p <文件>
查看谁在何时修改了 <文件> 的什么内容 $ git blame <文件>

分支与标签

操作 命令
列出所有现有分支 $ git branch
切换 HEAD 分支 $ git checkout <分支>
基于当前 HEAD 创建新分支 $ git branch <新分支>
基于远程分支创建新的跟踪分支 $ git checkout --track <远程/分支>
删除本地分支 $ git branch -d <分支>
为当前提交打上标签 $ git tag <标签名>

更新与发布

操作 命令
列出所有当前配置的远程仓库 $ git remote -v
显示远程仓库信息 $ git remote show <远程>
添加新的远程仓库,命名为 <远程> $ git remote add <远程> <URL>
从 <远程> 下载所有更改,但不合并到 HEAD $ git fetch <远程>
下载更改并直接合并/集成到 HEAD $ git pull <远程> <分支>
将本地更改发布到远程仓库 $ git push <远程> <分支>
删除远程仓库上的分支 $ git branch -dr <远程/分支>
发布你的标签 $ git push --tags

合并与变基

操作 命令
将 <分支> 合并到当前 HEAD $ git merge <分支>
将当前 HEAD 变基到 <分支> 上(不要对已发布的提交进行变基!) $ git rebase <分支>
中止变基操作 $ git rebase --abort
解决冲突后继续变基 $ git rebase --continue
使用配置的合并工具解决冲突 $ git mergetool
使用编辑器手动解决冲突,并在解决后标记文件为已解决 $ git add <已解决文件> $ git rm <已解决文件>

撤销操作

操作 命令
丢弃工作目录中的所有本地更改 $ git reset --hard HEAD
丢弃特定文件的本地更改 $ git checkout HEAD <文件>
撤销一个提交(通过生成一个包含相反更改的新提交) $ git revert <提交>
将 HEAD 指针重置到先前的提交,并丢弃自那时起的所有更改 $ git reset --hard <提交>
将 HEAD 指针重置到先前的提交,并将所有更改保留为未暂存的更改 $ git reset <提交>
将 HEAD 指针重置到先前的提交,并保留未提交的本地更改 $ git reset --keep <提交>
相关推荐
mister_guo18 小时前
开发指南:Git日常维护与常用命令
git
鶴哥只手遮天1 天前
Git 2.56 源码深度剖析:为 Git 3.0 铺路的架构重构
git·开源
小此方1 天前
「插曲:Git」标签管理篇:理解Tag标签、为指定提交打标签、查看标签详情与附注标签
git
Madison-No71 天前
多语言聊天大模型--测试报告
linux·git·python·selenium·jmeter·自动化·postman
小此方1 天前
「插曲:Git」多人协作篇:远程分支创建与关联、多人协作冲突解决、Feature分支开发与合并、git remote prune清理失效分支
git
可乐ea1 天前
Git 基础设施重建:智能体规模开发下的读写解耦
大数据·git·elasticsearch·分布式存储·git基础设施·智能体规模开发·读写解耦
信可维1 天前
AI 说「改完了」怎么确认真改完了:git diff + 测试 + 一张验收表的 3 步复核
人工智能·git
Sun子矜1 天前
Git+Gitee 新手教程精简归纳版
git·gitee
亿道电子Emdoor1 天前
【Perforce】Klocwork-kwgcheck图形化界面无法打开如何解决
git·python·github
小此方2 天前
「插曲:Git」企业规范篇:DevOps开发模型、Git Flow五类分支设计与测试/预发布/生产环境Bug修复及Hotfix紧急发布流程
git·bug·devops