Git常用命令
如果您不能很好的应用 Git,那么这里为您提供一个非常棒的 Git 在线练习工具 Git Online,您可以更直观的看到您所使用的命令会产生什么效果。
安装
[mac] 通过 Homebrew 安装(推荐)
安装前检查:
检查本地是否自带 git。如果有,查看 git 安装路径,分析安装方式,选择性更新 git
1 | git -v |
检查本地 homebrew 是否自带。如果有,则更新下
1 | brew -v |
开始安装:
1 | /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" |
安装完成后,根据提示将 Homebrew 添加到环境变量中(M 系列芯片需手动添加)
安装 git
1 | brew install git |
检查是否安装成功:
1 | which git |
更新 Homebrew 软件索引:
1 | brew update |
升级 Git:
1 | brew upgrade git |
其他安装方式,详见
Tips:
系统自带的 Git 路径为
/usr/bin/git
,Homebrew 安装的路径为:- Apple Silicon(M1/M2):
/opt/homebrew/bin/git
- Intel:
/usr/local/bin/git
- Apple Silicon(M1/M2):
如果你执行
which git
仍显示为/usr/bin/git
,说明未生效。请重新打开终端,或手动设置 PATH:1
2echo 'export PATH="/opt/homebrew/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
配置账号
1 | git config --global user.name hua |
生成的配置信息在用户根目录/.gitconfig
Tips::
Git 自带一个 git config 的工具来帮助设置控制 Git 外观和行为的配置变量。这些变量存储再三个不同的位置:
- /etc/gitconfig 文件:包含系统上每一个用户及他们仓库的通用配置。如果在执行 git config 时带上 –system 选项,那么它就会读写该文件中的配置变量。(由于它是系统配置文件,因此您需要管理员吧或超级用户权限来修改它。)
- ~/.gitconfig 或 ~/.config/git/config 文件:只针对当前用户。您可以传递 –global 选项让 Git 读写此文件,这会对您的系统上所有的仓库生效。
- 当前使用仓库的 Git 目录中的 config 文件(即 .git/config):针对该仓库。您可以传递 –local 选项让 Git 强制读写此文件,虽然默认情况下的就是它。(当然,您需要进入某个 Git 仓库中才能让该选项生效。)
每一个级别会覆盖上一个级别的配置,所以,**.git/config** 的配置变量会覆盖 /etc/gitconfig 中的配置变量。
日常技能
1 | # 查看分支合并图 |
查看提交记录
查看提交日志,会发现如下内容:
commit 后面的那一串字符:sha1 计算的结果。
sha1、md5:加密算法、随机数,用于区分是哪一次提交。
自定义查看提交记录日志:
1 | git log -2 // 2:指最近的2次提交 |
Q & A
[mac] brew update 更新太慢
使用 USTC 国内镜像(推荐)
修改终端配置文件
1 | vim ~/.zshrc |
粘贴以下内容到文件末尾
1 | # Homebrew 国内镜像加速(USTC) |
保存并生效配置
1 | source ~/.zshrc |
[win] git status, git commit 等中文信息乱码问题
1 | git config --global gui.encoding utf-8 |
删除用户配置信息
找到 .gitconfig 文件直接删掉(最直接)
或通过命令删除
1
2git config --global(或 --system 或 --local) --unset user.name
git config --global(或 --system 或 --local) --unset user.email
第一次发布项目(本地 -> 远程)
1 | git init |
本地 git 与远程 github 保持登录联通
git 的远程仓库托管网站,推荐 github
为了在本地和远程仓库之间进行操作, 可采取免密钥登录,配置 .ssh 先在本地配置, 然后把公钥发送给远程仓库 github
在本地 git 命令行中输入:
1 | ssh-keygen -t rsa -C [email] |
然后一直回车, 出现下图则表示成功
发送给 github
github -> settings -> SSH and … -> New SSH -> title & key
复制本地公钥(xx.pub)到 key 中,删掉最后的回车占位符
如果本地和远程成功通信,则在本地./ssh 目录中自动生成known-hosts文件
测试本地仓库与远程仓库的登录连通性
1
ssh -T git@github.com
本地创建 git 项目与远程项目进行关联
本地创建 git 项目与远程项目进行关联时,要保持本地电脑 PC 端 github 账号登录状态。(一般是本地电脑,这个跟 ssh 配置有关。ssh 配置指向其他地址,则其他地址上的 github 账号保持登录状态即可)参考本地 git 与远程 github 保持登录联通
先创建一个目录 demo
进入该目录,鼠标右键点击 git bash…, 打开 git 命令端, 输入
git init
, 会自动在 demo 目录下生成 .git目录(该目录是隐藏的).github 上创建一个 Repository.
ssh: connect to host github.com port 22: Connection timed out
查看是否存在 id_rsa id_rsa.pun known_hosts 三个文件,如果没有则参考 ssh 本地关联远程 github
1 | cd ~/.ssh |
继续使用 SSH,但换端口(443):
编辑 SSH 配置:
1 | vim ~/.ssh/config |
添加已下内容:
1 | Host github.com |
测试连接:
1 | ssh -T git@github.com |
如果看到 Hi username! You've successfully authenticated...
就说明成功了
.gitignore 配置
使用场景:如 .gitignore 文件编写需要排除的文件。以下是常见的通配符:
*
:匹配任意字符。*.xxx
:匹配后缀.xxx
的文件中。!xx.xxx
:在后缀.xxx
的文件中,排除xx.xxx
文件,结合*.xxx
使用。dir(目录)/
:忽略dir
中的所有文件。dir(目录)/*/*.xxx
:能够忽略如dir/t1/a.xxx
,dir/t2/b.xxx
,但不能忽略含 2 级以上的目录中的*.xxx
(如:dir/a/b/j.xxx
)文件,这跟通配符*
有关。dir/**/*.xxx
:忽略任意级别目录中的*.xxx
文件。- git 项目中创建的空目录,默认自动忽略,git status 查不到此目录信息。