# 开始配置
# 生成sshkey
ssh-keygen -t rsa -C "youremail@example.com"
# 用户名&邮箱配置
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
2
# 创建版本库(仓库)
# 创建仓库
mkdir <仓库name>
# 进入仓库
cd <仓库name>
# 把当前目录初始化成Git仓库
git init
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 "提交描述"
2
3
4
5
6
7
8
9
# 版本管理
# 提交修改
如修改test.txt
的内容后,运行git status
命令看看被修改的文件,然后再使用git add test.txt
、
git commit -m "修改描述"
把修改后的文件提交到仓库,提交后可再次使用git status
查看当前状态。
# 显示 新增/删除/被改动等 的文件
git status
2
# 查看版本记录
# 查看版本记录
git log # 显示版本号、提交时间等信息
2
也可使用可视化工具查看Git版本历史: 在仓库目录右键 >
Git BUI Here
# 回退版本
首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD
表示当前版本,也就是最新的提交1094adb...(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^
,上上一个版本就是HEAD^^
,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100
。
# 回退到上一个版本
$ git reset --hard HEAD^
2
此时查看git log
记录发现,原来最新的版本已经没有了,想回到原来最新的版本怎么办?这就需要知道最新的版本的版本号
# 跳转到指定版本
git reset --hard <版本号前几位>
2
但是不知道版本号怎么办?Git提供了一个命令git reflog
用来记录你的每一次命令
git reflog
# 撤销修改
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_rsa
和id_rsa.pub
这两个文件,如果已经有了,可直接跳到下一步。 如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key
:
# 创建SSH Key
ssh-keygen -t rsa -C "邮件地址"
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
2
3
4
5
下一步,就可以把本地库的所有内容推送到远程库上
# 把文件推送到远程仓库
git push -u <仓库名> <分支名>
# 示例
git push -u origin master
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
2
# 查看远程仓库
# 查看远程仓库
git remote -v
2
# 删除远程仓库
# 删除远程仓库
git remote rm <仓库名>
2
# 从远程库克隆项目
# 从远程库克隆项目
git clone <仓库地址>
2
# 克隆指定分支
# 克隆指定分支
git clone -b <分支名> <仓库地址>
2
# 本地回退版本后,如何同步到远程仓库
# 本地先回退到之前的版本
# --mixed:最新版HEAD的改变会保存在暂存区,
# --hard:最新版HEAD的变化、暂存区中还没有提交的变化、工作区中所有的变化都会被移除
git reset --mixed <版本号前几位>
或者
git reset --hard <版本号前几位>
# 强制推送到远程仓库
git push --force
# 此时远程代码和本地代码都正常回退成功
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
2
3
4
5
6
7
8
# 分支管理
# 创建分支
# 创建分支
git checkout -b <分支名>
2
# 查看分支
# 查看分支
git branch
2
查看分支时,在分支前带 * 号的表示当前的分支
# 切换分支
# 切换分支
git checkout <分支名>
2
# 合并分支
# 合并本地的分支
git merge <分支名>
# 合并远程的分支
git merge <远程仓库名>/<分支名>
2
3
4
5
注意,是将指定分支合并到当前分支,并非当前分支合并到指定分支。
一般情况下是把当前分支切换到主分支,然后把子分支合并到主分支。
# 删除分支
# 删除分支
git branch -d <分支名>
2
# 修改分支名
# 修改分支名
git branch -m <原分支名> <新分支名>
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
2
3
4
5
6
7
8
9
10
11
12
13
# 参考文档
https://www.liaoxuefeng.com/wiki/896043488029600 (opens new window)