详细的Git使用教程
- 前言
- 一、Git是什么?
- 二、Git工作区、暂存区、Git 仓库
- 三、Git的使用
- 1.安装
- 2.设置用户信息
- 3.创建版本库
- 4.git基本操作
- 5.git分支管理
前言
本文介绍了Git学习的基础内容
一、Git是什么?
Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目版本管理。
Git 是 Linus Torvalds为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
二、Git工作区、暂存区、Git 仓库
- git工作区
工作区是对项目的某个版本独立提取出来的内容。就是你在电脑里能看到的目录。
- 暂存区(stage)
暂存区是一个文件,保存了下次将要提交的文件列表信息,一般在 Git 仓库目录中。 按照 Git的术语叫做“索引”,不过一般说法还是叫“暂存区”。
- gti仓库
Git 仓库目录是 Git 用来保存项目的元数据和对象数据库的地方。 这是 Git 中最重要的部分,从其它计算机克隆仓库时,复制的就是这里的数据。
三、Git的使用
1.安装
下载地址:git下载
双击开始安装,一直点击next完成安装,鼠标右击桌面出现如下就安装完成了
2.设置用户信息
安装完 Git 之后,要做的第一件事就是设置你的用户名和邮件地址。 这一点很重要,因为每一个 Git 提交都会使用这些信息,它们会写入到你的每一次提交中,不可更改:
$ git config --global user.name "yourname"
$ git config --global user.email "123456789@qq.com"
配置完成后可以使用以下命令查看
$ git config --list
3.创建版本库
$ mkdir mygit
$ cd mygit //切换到新建的文件夹下
$ git init
之后在该目录下会出现一个.git文件夹,这个是Git来跟踪管理版本库的。
4.git基本操作
1. 创建一个文件
$ touch test.txt
2. 将文件添加到缓存区
$ git add test.txt
3. 将文件提交到仓库
//引号里面本次提交的说明
$ git commit -m "first commit"
4. 查看当前状态
//查看当前版本状态
$ git status
5. 查看历史记录
//git log显示你所的提交日志
$ git log
6. 回退历史版本
$ git reset
HEAD 表示当前版本,而 HEAD~ 表示 HEAD 的上一个版本,HEAD~~则是上上个版本,如果表示上10个版本,则可以用HEAD~10来表示
$ git reset --hard HEAD~
–hard : 回退版本库、暂存区、工作区。(这里是回到初始状态,所以修改过的也就没了)
–mixed: 回退版本库、暂存区。(mixed为git reset的默认参数)
–soft: 回退版本库。
7. 查看历史命令(版本号)
$ git reflog
d9d27d4 (HEAD -> master) HEAD@{0}: reset: moving to HEAD
d9d27d4 (HEAD -> master) HEAD@{1}: commit (initial): first commit
8. 版本对比
在已经存在的文件中添加内容
$ git diff
warning: LF will be replaced by CRLF in a.txt.
The file will have its original line endings in your working directory
diff --git a/a.txt b/a.txt //表示对比的是存放在暂存区域和工作目录的a.txt
index e69de29..190a180 100644 //表示对应文件的版本号
--- a/a.txt //表示该文件是旧文件
+++ b/a.txt //表示该文件是新文件
@@ -0,0 +1 @@
+123 //表示新添加的内容
9. 撤销修改
$ git checkout -- README.md
就是把没暂存的干掉,或者说,丢弃工作区,回到到暂存状态。
10.删除文件
$ git rm a.txt
rm 'a.txt'
11.重命名文件
git mv 旧文件名 新文件名
$ git mv b.txt c.txt
5.git分支管理
1.分支的创建与切换
git branch 分支名
//创建分支
$ git branch feature1
//查看分支
$ git log
commit 59707b02146659f41e9012bf6623e60dfcae05e4 (HEAD -> master, feature1)
//会看到版本号后面多了个(HEAD -> master, feature1)
//切换分支
$ git checkout feature1
Switched to branch 'feature1'
2. 合并分支
git merge 分支名
//切换分支
19737@LAPTOP-3TQGGV4N MINGW64 /d/Users/19737/Desktop/mymenu/git (master)
$ git checkout feature1
Switched to branch 'feature1'
//查看所有文件
$ ls
123.txt c.txt test.txt
//随意修改任意一个文件
//切回主分支
$ git checkout master
Switched to branch 'master'
//合并分支
$ git merge feature1
Updating 59707b0..f2ec55e
Fast-forward
b.txt => 123.txt | 0
c.txt | 1 +
2 files changed, 1 insertion(+)
rename b.txt => 123.txt (100%)
create mode 100644 c.txt
3. 删除分支
git branch -d 分支名
$ git branch -d feature1
Deleted branch feature1 (was f2ec55e).
//如果试图删除未合并的分支,使用下面的命令强制删除
$ git branch -D 分支名
4. 变基
rebase将本地多次的commit合并成一个commit。
// 合并前两次的commit
$ git rebase -i head~~
5. 消除冲突
//新建一个分支
$ git branch feature2
$ git checkout feature2
Switched to branch 'feature2'
//修改test.txt文件
$ vi test.txt
$ git add .
$ git commit -m "feature2"
//切换到master分支
$ git checkout master
Switched to branch 'master'
//同样对test.txt进行修改
$ vi test.txt
$ git add .
$ git commit -m "master"
//合并分支feature2会看到
hello world!
Hello Git!
<<<<<<< HEAD
123
=======
123456789
>>>>>>> feature2
//Git用<<<<<<< ======= >>>>>>>标记出不同分支的内容
//我们修改之后在提交就可以了
$ git merge feature2
Auto-merging test.txt
Merge made by the 'ort' strategy.
test.txt | 1 +
1 file changed, 1 insertion(+)