一、Git安装
1、在Git 官网下载对应系统的软件,下载地址为:https://git-scm.com/downloads。
2、进入安装,无特殊需求一直默认下一步,完成安装。
3、在桌面上鼠标右击如果看到有两个git单词则安装成功。
二、Git工作流程
1、Git工作区域
2、向Git仓库提交文件
三、Git初始化及仓库创建和操作
1、Git安装之后需要进行一些基本信息设置
- 设置用户名:git config -- global user.name
- 设置用户邮箱:git config -- global user.email
注:git config --global 参数,有了这个参数表示你这台机器上所有的git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和邮箱。
2、初始化一个新的git仓库
- 创建一个文件夹作为本地代码仓库。
- 进入文件夹,右击选择Git Bash Here->输入$ git int。
四、Git命令
1、本地与远程仓库建立连接
- 生成本地 ssh key,若已有直接到第 2 步:ssh-keygen -t rsa -C "youremail@xxx.com"
- 查看本地 ssh key:cat ~/.ssh/id_rsa.pub
- 将 ssh key 粘贴到远端仓库

2、git clone: 克隆仓库
# 克隆远端仓库到本地
git clone <git url># 克隆远端仓库到本地,并同时切换到指定分支 branch1
git clone <git url> -b branch1# 克隆远端仓库到本地并指定本地仓库的文件夹名称为 my-project
git clone <git url> my-project
3、git add: 提交到暂存区
# 将所有修改的文件都提交到暂存区
git add .# 将修改的文件中的指定的文件 a 和 b 提交到暂存区
git add ./a.cpp ./b.txt# 将文件夹m下修改的内容提交到暂存区
git add ./m
4、git commit: 提交到本地仓库
# 将工作区内容提交到本地仓库,并添加提交信息commit message
git commit -m "commit message"# 将工作区内容提交到本地仓库,并对上一次 commit 记录进行覆盖
git commit -m "new message" --amend# 将工作区内容提交到本地仓库,并跳过 commit 信息填写
git commit --amend --no-edit# 跳过校验直接提交,
git commit --no-verify -m "commit message"# 一次性从工作区提交到本地仓库,相当于 git add . + git commit -m
git commit -am
5、git push: 提交到远程仓库
# 将当前本地分支 branch1 内容推送到远程分支 origin/branch1
git push# 若当前本地分支 branch1,没有对应的远程分支 origin/branch1,需要为推送当前分支并建立与远程上游的跟踪
git push --set-upstream origin branch1# 强制提交,例如用在代码回滚后内容
git push -f
6、git pull: 拉取远程仓库并合并
git pull 会拉取远程仓库并合并到本地仓库,相当于执行 git fetch + git merge
# 若拉取并合并的远程分支和当前本地分支名称一致,则直接执行:
git pull# 若拉取并合并的远程分支和当前本地分支名称不一致
git pull <远程主机名> <分支名>
## 例如当前本地分支为 branch2,要拉取并合并 origin/branch1,则执行:
git pull git@github.com:zh-lx/git-practice.git branch1# 使用 rebase 模式进行合并
git pull --rebase
7、git checkout: 切换分支
用于切换分支及撤销工作区内容的修改。
# 切换到已有的本地分支 branch1
git checkout branch1# 切换到远程分支 branch1
git checkout origin/branch1# 基于当前本地分支创建一个新分支 branch2,并切换至 branch2
git checkout -b branch2# 基于远程分支 branch1 创建一个新分支 branch2,并切换至 branch2
git checkout origin/branch1 -b branch2
8、git restore: 取消缓存
git restore 用于将改动从暂存区退回工作区。
# 将 a.js 文件取消缓存(取消 add 操作,不改变文件内容)
git reset --staged a.js# 将所有文件取消缓存
git reset --staged .
9、git reset: 回滚代码
用于撤销各种 commit 操作,回滚代码。
# 将某个版本的 commit 从本地仓库退回到工作区(取消 commit 和 add 操作,不改变文件内容)
## 默认不加参数mixed
git reset --mixed <commit_sha># 将某个版本的 commit 从本地仓库退回到缓存区(取消 commit 操作,不取消 add,不改变文件内容)
git reset --soft <commit_sha># 取消某次 commit 的记录(取消 commit 和 add,且改变文件内容)
git reset --hard <commit_sha># 以上三种操作退回了 commit,是退回本地仓库的 commit,没有改变远程仓库的 commit。通常再次修改后配合如下命令覆盖远程仓库的 commit
git push -f
10、git merge :合并分支
# 将本地某分支合并至当前分支
git merge <分支名># 将远程某分支合并至当前分支
git merge <远程主机名> <分支名>