Git 命令笔记
记录一些常用的 git 命令,在使用的过程中,根据需求再不断添加。
1. fork 项目与 clone 项目
把其他人的项目复制到自己的仓库里的操作叫做 fork,fork 完之后,这个项目就是你自己的了。
无论是 fork 的或是自己创建的 GitHub 项目,在网站上编辑总是太麻烦了,把整个项目拷贝到自己电脑里的操作就叫做 clone。clone 的操作需要用到 git 命令,那么首先电脑上得有 git 命令工具,Windows 电脑直接在 GitHub 上下载 git-for-windows 就可以了。如果想深入了解 git 的话,可以看看这本书 Pro Git 。
安装完 git 后,运行 git bash,首先创建一个你需要放置 clone 的项目的文件夹,并 clone 你的项目到这个文件夹,需要用到以下命令:
cd 路径
--- 前往你要进行下一步操作的路径
mkdir 文件夹名
--- 创建一文件夹
git clone 项目地址
--- 将项目 clone 到你的电脑里。
举个例子
加入在你的 GitHub 上有一个项目叫做 myProject,你的 GitHub 用户名叫做 username,你要把 myProject 项目 clone 到你的电脑 E 盘下新建的 GitHubProject 文件夹里应该怎么操作呢?
首先在你的 GitHub 页面 myProject 项目界面上会有 Clone or Download
的下拉按钮,点击它,你会看到 https://github.com/username/myProject.git
的网址,这个就是你 clone 是要用到的地址,把它复制下来。
然后打开 git bash,依次输入以下命令:
cd e:
mkdir GitHubProject
cd GitHubProject/
git clone https://github.com/username/myProject.git
现在打开 E 盘,在 GitHubProject 文件里,你应该能看到 myProject 文件夹,这就是你 clone 到的项目。
2. 本地更新项目后提交到远程
项目 clone 到本地后,当然是为了方便更新项目,更新完之后,如何把项目提交到远程呢,使得在 GitHub 网页上看到的和电脑文件夹看到的一致呢,继续接下来的操作,需要用的以下命令。
git status
--- 查看本地项目的状态
git add -A
--- 把你的更新添加到缓存中去,表示已经准备好提交了,-A
表示把你的整个项目都放到缓存中。
git commit -m "说明"
--- 提交你的更新,引号的里的说明是简要介绍一下你都更新了些什么内容。
git push origin master
--- 将你的更新推送到远程项目中。
举个例子
假如你在 E:\GitHubProject\myProject\ 中添加了一个 example.md 的文件,现在要把它提交到远程项目中去,要如何操作呢。
打开 git bash ,依次输入以下命令:
cd e:
cd GitHubProject
cd myProject
git add -A
git commit -m "添加example.md文件"
git push origin master
如此整个提交过程完成。
3. 如何保持 fork 别人的项目在自己的仓库里保持更新
假设在 E:\GitHubProject\ 文件夹中有个 otherProject 文件夹是你 fork 自其他人的项目,如何确保创建项目的人更新了项目后,你能同步他更新后的项目呢,只需要如下几步操作就可以了。
#首先确定是否建立了主项目的远程源
$ git remote -v
#如果里面只有你自己的两个源( fetch 和 push ),那就需要添加主项目的源
#Url 表示主项目的地址
$ git remote add upstream Url
#再次确定远程源,就能看到有四个源,两个前缀是 origin ,两个前缀是 upstream,前缀是 upstream 的就是主项目的远程源
$ git remote -v
#切换到 master 分支
$ git checkout master
#与主项目合并
$ git fetch upstream
$ git merge upstream/master
#推送到远程
$ git push origin master
至此,你 fork 的项目就与 源项目保持一致了。
4. 向客户端添加 SSH key
- 查看客户端是否存在 ssh 私钥
ls -al ~/.ssh
- 生成私钥
$ ssh-keygen -t rsa -b 4096 -C "[email protected]"
Enter file in which to save the key(...):#直接按 Enter 默认文件
Enter passphrase (empty for no passphrase):#默认为空,下同
Enter same passphrase again:
成功,会显示一副 SSH key 图形。
- 添加 SSH key 到 ssh-agent
首先确保 ssh-agent 在运行
$ eval $(ssh-agent -s)
Agent pid xxxx #已运行
然后将 SSH 私钥添加到 ssh-agent
ssh-add ~/.ssh/id_rsa
完成。
- 复制公钥到 GitHub 账户
$ clip < ~/.ssh/id_rsa.pub
#或用编辑器打开该文件复制
登录 GitHub ,点击头像找到 Setting
---> SSH and GPG keys
,点击 New SSH key
,输入 Title
名,将复制的公钥粘贴到 Key
里。
- 验证 SSH key
在 Git bash 中输入:
ssh -T [email protected]
会显示类似如下信息:
The authenticity of host 'github.com (13.229.188.59)' can't be established.
RSA key fingerprint is SHA256:************************************.
Are you sure you want to continue connecting (yes/no)?
输入 yes
则会显示如下信息:
Warning: Permanently added 'github.com,13.229.188.59' (RSA) to the list of known hosts.
Hi UserName! You've successfully authenticated, but GitHub does not provide shell access.
即表示 SSH key 设置成功。
5. HTTPS 与 SSH URL 互换
使用 https url 克隆项目后,每次 push 代码都要提示输入用户名和密码,很烦,怎么办?使用 SSH url。可是我们的项目已经用 https 克隆到本地了,又不想把本地的项目删除了,再用 ssh 重新克隆一遍,还好 GitHub 为我们提供了解决办法,直接将 HTTPS URL 切换成 SSH URL,很方便。当然反过来也是可以切换的。
使用到的命令就一条:git remote set-url your-repository-url
。
5.1 HTTPS 切换为 SSH
- 打开终端
- 进入到项目根目录
- 先检查当前项目的远程 url 获取要修改的远程名称。
$ git remote -v
origin https://github.com/_USERNAME/REPOSITORY_.git (fetch)
origin https://github.com/_USERNAME/REPOSITORY_.git (push)
- 切换 url
git remote set-url origin [email protected]:_USERNAME_/_REPOSITORY_.git
- 验证 url
$ git remote -v
# Verify new remote URL
origin [email protected]:_USERNAME/REPOSITORY_.git (fetch)
origin [email protected]:_USERNAME/REPOSITORY_.git (push)
5.2 SSH 切换为 HTTPS
- 打开终端
- 进入到项目根目录
- 先检查当前项目的远程 url 获取要修改的远程名称。
$ git remote -v
origin [email protected]:_USERNAME/REPOSITORY_.git (fetch)
origin [email protected]:_USERNAME/REPOSITORY_.git (push)
- 切换 url
git remote set-url origin https://github.com/_USERNAME_/_REPOSITORY_.git
- 验证 url
$ git remote -v
# Verify new remote URL
origin https://github.com/_USERNAME/REPOSITORY_.git (fetch)
origin https://github.com/_USERNAME/REPOSITORY_.git (push)
6. 让 git commit 更好看 - git commit emoji
提交代码时,在 commit 摘要里添加 emoji,让提交摘要丰富多彩,当然使用 emoji 也要符合规范。
代码示例:
git commit -m ':tada: Initialize Repo' #初次提交代码
emoji 自查表:
emoji | emoji 代码 | commit 说明 |
---|---|---|
🎉 (庆祝) | :tada: | 初次提交 |
✨ (火花) | :sparkles: | 引入新功能 |
🔖 (书签) | :bookmark: | 发行/版本标签 |
🐛 (bug) | :bug: | 修复 bug |
🚑 (急救车) | :ambulance: | 重要补丁 |
🌐 (地球) | :globe_with_meridians: | 国际化与本地化 |
💄 (口红) | :lipstick: | 更新 UI 和样式文件 |
🚨 (警车灯) | :rotating_light: | 移除 linter 警告 |
🔧 (扳手) | :wrench: | 修改配置文件 |
➕ (加号) | :heavy_plus_sign: | 增加一个依赖 |
➖ (减号) | :heavy_minus_sign: | 减少一个依赖 |
⬆️ (上升箭头) | :arrow_up: | 升级依赖 |
⬇️ (下降箭头) | :arrow_down: | 降级依赖 |
⚡️ (闪电)🐎 (赛马) | :zap: :racehorse: | 提升性能 |
📈 (上升趋势图) | :chart_with_upwards_trend: | 添加分析或跟踪代码 |
🚀 (火箭) | :rocket: | 部署功能 |
✅ (白色复选框) | :white_check_mark: | 增加测试 |
📝 (备忘录) | :memo: | 撰写文档 |
🔨 (锤子) | :hammer: | 重大重构 |
🎨 (调色板) | :art: | 改进代码结构/代码格式 |
🔥 (火焰) | :fire: | 移除代码或文件 |
✏️ (铅笔) | :pencil2: | 修复 typo |
🚧 (施工) | :construction: | 工作进行中 |
👷 (工人) | :construction_worker: | 添加 CI 构建系统 |
💚 (绿心) | :green_heart: | 修复 CI 构建问题 |
🔒 (锁) | :lock: | 修复安全问题 |
🐳 (鲸鱼) | :whale: | Docker 相关工作 |
🍎 (苹果) | :apple: | 修复 macOS 下的问题 |
🐧 (企鹅) | :penguin: | 修复 Linux 下的问题 |
🏁 (旗帜) | :checked_flag: | 修复 Windows 下的问题 |
7. Git 分支
创建分支的作用可以很方便的对项目进行管理,用 master
主分支进行项目的发布,用其他分支为项目添加新功能以及做测试工作,当测试完成后,将自己创建的分支合并到 master
分支,完成新功能发布。
7.1 创建切换分支
git branch branch-name
git checkout branch-name
或
git checkout -b branch-name
branch-name
是创建的分支名。git checkout -b
中的参数 -b
表示创建并切换分支,是上面两条命令的精简版。
7.2 查看分支
使用如下命令查看分支:
git branch
该命令会列出所有分支,当前分支前标有 *
号。
7.3 在新的分支上提交
切换到新分支后,对项目文件进行修改后,在该新分支上提交,尔后在 GitHub 的新分支中就能看到新的提交,但在 master
分支上则看不到新提交的内容。
7.4 合并到主分支
使用命令 git checkout master
切换到主分支后,使用如下命令将新分支下修改的内容合并到主分支:
git merge new-branch-name
7.4 删除分支
当一个分支不再使用时,可以用如下命令将其删除:
git branch -d branch-name