1 Git安装及配置
1.1 安装
sudo apt-get install git
- Windown系统
直接网上下载git安装包,安装后有Git Bash则成功
1.2 配置
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
–global :表示这台机器所有git仓库都使用这个配置,也可以对某个仓库指定不同的配置。
如果要在某个特定的项目中使用其他名字或者电邮,只要去掉 --global 选项重新配置即可。
2 创建仓库
得到Git仓库有两种方式,一是在本地自己创建,二是从一个已有的库里克隆出来。
2.1 创建本地库
- 本地创建一个目录,做为仓库目录
- 在新建的库目录下运行 git init 命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行。创建好后为一个空仓库,但有一个隐藏的.git文件(跟踪管理版本库),也就是说明该库创建成功,并不要轻易修改该文件。
git init命令也可以指定目录做为Git仓库,命令如下:
git init newdir //newdir为想要做为仓库的目录
2.2 从远程获取仓库
使用 git clone 从现有 Git 仓库中拷贝项目(类似 svn checkout),克隆远程仓库前需要将**传输密钥(id_rsa.pub)**上传到代码仓库管理系统中,克隆仓库的命令格式为:
//repo:Git仓库地址
//directory:本地目录
git clone <repo> //如 git clone git://github.com/gitlearn/grit.git
git clone <repo> <directory> //如 git clone git://github.com/gitlearn/grit.git newdir
3 工作区、暂存区和版本库
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/b335e954db3ed93790f21ad71cdb4f0f.png)
- 工作区:就是你在电脑里能看到的目录。
- 暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index文件(.git/index)中,暂存区有时也叫作索引(index)。
- 版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。
4 Git基本操作
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/48e3114aee01d4ccefd8dadd020a3362.png)
- workspace:工作区
- staging area:暂存区/缓存区
- local repository:或本地仓库
- remote repository:远程仓库
4.1 创建仓库命令
命令 | 功能 | 说明 |
---|
git init | 初始化当前目录为库目录 | Git 使用 git init 命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以 git init 是使用 Git 的第一个命令。在执行完成 git init 命令后,Git 仓库会生成一个 .git 目录,该目录包含了资源的所有元数据,其他的项目目录保持不变。 |
git init newdir | 使用指定目录作为Git仓库 | 初始化后,会在 newdir目录下会出现一个名为 .git 的目录 |
git clone [url] | 拷贝一个 Git 仓库到本地 | [url] 是你要拷贝的项目地址 |
git clone [url] [dir] | 拷贝一个 Git 仓库到本地指定目录 | [dir] 为想要指定的目录 |
4.2 配置命令
命令 | 功能 | 说明 |
---|
git config --list | 显示当前的 git 配置信息 | |
git config -e | 针对当前仓库修改配置文件 | git config -e user.name “JK” |
git config -e --global | 针对系统上所有仓库 | git config -e --global user.name “JK” |
4.3 提交与修改命令
命令 | 功能 | 说明 |
---|
git add [file1] [file2] … | 将指定文件添加到暂存区 | 如 : git add README 添加README到暂存区 |
git add [dir] | 添加指定目录到暂存区,包括子目录 | “.”代表当前目录 ,git add ./ 添加当前目录下的所有文件到暂存区 |
git status | 查看仓库当前的状态,显示有变更的文件 | 查看你上次提交之后是否有对文件进行再次修改,使用 -s 参数可以获得简短的输出结果 |
git diff | 比较文件的不同,即暂存区和工作区的差异 | 显示已写入暂存区和已经被修改但尚未写入暂存区文件对区别 |
git diff --stat | 摘要地显示而非整个diff | |
git diff [file] | 比较指定工作区文件与暂存区的差异 | |
git diff --cached | 显示暂存区和上一次提交(commit)的差异 | 与git diff --staged效果相同,可以后面加上[file]来查看指定文件的差异 |
git diff HEAD | 查看已缓存的与未缓存的所有改动 | |
git diff [first-branch] [second-branch] | 显示两次提交之间的差异 | |
git commit -m [message] | 提交暂存区到本地仓库 | -m [message] 添加一些提交信息,如果想再另一行显示第二段信息,可以再加个-m [message] |
git commit [file1] [file2] … -m [message] | 提交暂存区的指定文件到仓库区 | |
git reset | 回退版本 | 用有三个参数 --soft, --mixed , --hard ,默认为–mixed |
git reset --mixed | 重置git commit 和 git add | –mixed 为默认,可以不带该参数,重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变 ,可指定commit id或文件 |
git reset --soft | 重置git commit | 相当于重写HEAD的指向 |
git reset --hard | 重置git commit 和 git add 和工作副本的修改 | 谨慎使用 –hard 参数,它会删除回退点之前的所有信息 |
git rm [file] | 将文件从暂存区和工作区中删除 | 如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f |
git rm --cached [file] | 把文件从暂存区域移除 | 把文件从暂存区域移除,但仍然希望保留在当前工作目录中 |
git mv [file] [newfile] | 移动或重命名一个文件、目录或软连接 | 如果新文件名已经存在,但还是要重命名它,可以使用 -f 参数 |
4.4 日志查看
命令 | 功能 | 说明 |
---|
git log | 查看历史提交记录 | |
git log [file] | 查看指定文件的历史提交记录 | |
git log --oneline | 简洁显示查看提交历史记录 | |
git log --graph | 查看历史中什么时候出现了分支、合并 | |
git log --reverse | 逆向显示所有日志 | git log --reverse --oneline |
git log --author= | 查找指定用户的提交日志 | git log --author=JK --oneline -5 查找JK近5次的提交 |
5 分支管理
命令 | 功能 | 说明 |
---|
git branch | 列出你在本地的分支 | |
git branch [branchname] | 创建branchname分支 | |
git branch -d [branchname] | 删除branchname分支 | 如果要强制删除使用-D |
git checkout [branchname] | 切换到branchname分支 | 切换分支的时候,Git 会用该分支的最后提交的快照替换你的工作目录的内容 |
git checkout [branchname] | 创建并切换到branchname分支 | |
git merge [branchname] | 合并[branchname]分支到当前分支 | |
git cherry-pick [commit id] | 将其他分支的commit提交复制到当前分支 | |