git使用手册

3/22/2017 git

# 开始配置

# 生成sshkey

ssh-keygen -t rsa -C "youremail@example.com"
1

# 用户名&邮箱配置

git config --global user.name "Your Name"
git config --global user.email "email@example.com"
1
2

# 创建版本库(仓库)

# 创建仓库
mkdir <仓库name> 

# 进入仓库
cd <仓库name>

# 把当前目录初始化成Git仓库
git init
1
2
3
4
5
6
7
8

# 添加文件到仓库

在仓库目录下放入文件,如新建一个test.txt文件,然后使用git add test.txt命令告诉Git,把文件添加到缓存区,然后使用git commit -m "提交描述"告诉Git,把文件提交到仓库。

# 添加指定文件或文件夹到缓存区,文件需添加后缀
git add <文件或文件夹name>                   # 单个文件
git add <文件或文件夹name> <文件或文件夹name>  # 多个文件

# 或 全部文件同时添加到缓存区
git add .

# 把文件从缓存区提交至仓库
git commit -m "提交描述"
1
2
3
4
5
6
7
8
9

# 版本管理

# 提交修改

如修改test.txt的内容后,运行git status命令看看被修改的文件,然后再使用git add test.txtgit commit -m "修改描述"把修改后的文件提交到仓库,提交后可再次使用git status查看当前状态。

# 显示 新增/删除/被改动等 的文件
git status
1
2

# 查看版本记录

# 查看版本记录
git log   # 显示版本号、提交时间等信息
1
2

也可使用可视化工具查看Git版本历史: 在仓库目录右键 > Git BUI Here

# 回退版本

首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交1094adb...(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

# 回退到上一个版本
$ git reset --hard HEAD^
1
2

此时查看git log记录发现,原来最新的版本已经没有了,想回到原来最新的版本怎么办?这就需要知道最新的版本的版本号

# 跳转到指定版本
git reset --hard <版本号前几位>
1
2

但是不知道版本号怎么办?Git提供了一个命令git reflog用来记录你的每一次命令

git reflog
1

# 撤销修改

https://www.liaoxuefeng.com/wiki/896043488029600/897889638509536 (opens new window)

# 删除文件

https://www.liaoxuefeng.com/wiki/896043488029600/900002180232448 (opens new window)

# 远程仓库

# SSH验证

使本机能关联远程仓库,首次需要SSH验证

  • 第1步:创建SSH Key。在用户主(C:\Users\dell)目录下,看看有没有.ssh目录, 如果有,再看看这个目录下有没有id_rsaid_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。 如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key
# 创建SSH Key
ssh-keygen -t rsa -C "邮件地址"
1
2
  • 第2步:登陆GitHub,右上角头像 > settings > SSH and GPG keys >Add SSH Key,在key的文本框里粘贴id_rsa.pub文件的内容

# 关联远程仓库

SSH验证完成后,在github创建仓库,创建仓库时记得取消 Initialize this repository with a README的勾选,然后在本地命令:

# 关联远程仓库,仓库名一般使用origin
git remote add <仓库名> <远程仓库地址>

# 示例
git remote add origin git@github.com:xugaoyi/test.git
1
2
3
4
5

下一步,就可以把本地库的所有内容推送到远程库上

# 把文件推送到远程仓库
git push -u <仓库名> <分支名>

# 示例
git push -u origin master
1
2
3
4
5

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

前提是目录已经git init初始化成仓库,并且git status状态是没有改动的,如果有改动则先git add .添加至缓存区,git commit -m '提交描述'提交至仓库,然后执行上面命令。

如创建仓库时勾选了 Initialize this repository with a README 则需先拉取README.md文件到本地仓库git pull

可关联多个远程仓库,注意给不同的远程仓库取不一样的名称,提交是分别按名称提交到不一样的远程仓库。

# 简化的推送命令
git push
1
2

# 查看远程仓库

# 查看远程仓库
git remote -v
1
2

# 删除远程仓库

# 删除远程仓库
git remote rm <仓库名>
1
2

# 从远程库克隆项目

# 从远程库克隆项目
git clone <仓库地址>
1
2

# 克隆指定分支

# 克隆指定分支
git clone -b <分支名> <仓库地址>
1
2

# 本地回退版本后,如何同步到远程仓库

# 本地先回退到之前的版本 
# --mixed:最新版HEAD的改变会保存在暂存区,
# --hard:最新版HEAD的变化、暂存区中还没有提交的变化、工作区中所有的变化都会被移除
git reset  --mixed <版本号前几位>
或者
git reset  --hard <版本号前几位>

# 强制推送到远程仓库
git push --force

# 此时远程代码和本地代码都正常回退成功
1
2
3
4
5
6
7
8
9
10
11

# 推送本地仓库到远程指定仓库

# 本地仓库有是dev和feat,远程仓库有master和daily。
# 现在要推送feat到daily中去

# 首先切换到feat分支
git checkout feat
# 推送到指定分支
git push origin feat: daily

1
2
3
4
5
6
7
8

# 分支管理

# 创建分支

# 创建分支
git checkout -b <分支名>
1
2

# 查看分支

# 查看分支
git branch
1
2

查看分支时,在分支前带 * 号的表示当前的分支

# 切换分支

# 切换分支
git checkout <分支名>
1
2

# 合并分支

# 合并本地的分支
git merge <分支名>

# 合并远程的分支
git merge <远程仓库名>/<分支名>
1
2
3
4
5

注意,是将指定分支合并到当前分支,并非当前分支合并到指定分支。

一般情况下是把当前分支切换到主分支,然后把子分支合并到主分支

# 删除分支

# 删除分支
git branch -d <分支名>
1
2

# 修改分支名

# 修改分支名
git branch -m <原分支名> <新分支名>
1
2

# 拉取指定分支

# 首先克隆项目,此时查看分支 gitgit branch 发现只有master分支。
git clone 项目地址
# 创建本地分支 dev-tang 并与远程分支 dev-tang 关联
# 注意:新建的本地分支名一定要与远程分支名一样
git checkout -b dev-tang origin/项目地址
# 切换 dev-tang 分支
git checkout -b dev-tang
# 拉取远程分支内容到本地
git pull origin  dev-tang
# 正常修改代码,暂存 修改 推执行命令:
git add .
git commit -' *** '
git push -u origin dev-tang
1
2
3
4
5
6
7
8
9
10
11
12
13

# 参考文档

https://www.liaoxuefeng.com/wiki/896043488029600 (opens new window)

上次更新: 2024/09/10 17:37:12
最近更新
01
跨域的几种常见解决方案
04-03
02
react教程
03-01
03
前端抓包神器whistle
09-01