Simon Y.
open main menu
Part of series: tech

Git 命令笔记

/ 12 min read

记录一些常用的 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

  1. 查看客户端是否存在 ssh 私钥
ls -al ~/.ssh
  1. 生成私钥
$ 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 图形。

  1. 添加 SSH key 到 ssh-agent

首先确保 ssh-agent 在运行

$ eval $(ssh-agent -s)
Agent pid xxxx #已运行

然后将 SSH 私钥添加到 ssh-agent

ssh-add ~/.ssh/id_rsa

完成。

  1. 复制公钥到 GitHub 账户
$ clip < ~/.ssh/id_rsa.pub
#或用编辑器打开该文件复制

登录 GitHub ,点击头像找到 Setting ---> SSH and GPG keys,点击 New SSH key ,输入 Title 名,将复制的公钥粘贴到 Key 里。

  1. 验证 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

  1. 打开终端
  2. 进入到项目根目录
  3. 先检查当前项目的远程 url 获取要修改的远程名称。
$ git remote -v
origin  https://github.com/_USERNAME/REPOSITORY_.git (fetch)
origin  https://github.com/_USERNAME/REPOSITORY_.git (push)
  1. 切换 url
git remote set-url origin [email protected]:_USERNAME_/_REPOSITORY_.git
  1. 验证 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

  1. 打开终端
  2. 进入到项目根目录
  3. 先检查当前项目的远程 url 获取要修改的远程名称。
$ git remote -v
origin  [email protected]:_USERNAME/REPOSITORY_.git (fetch)
origin  [email protected]:_USERNAME/REPOSITORY_.git (push)
  1. 切换 url
git remote set-url origin https://github.com/_USERNAME_/_REPOSITORY_.git
  1. 验证 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 自查表:

emojiemoji 代码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