详细的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(+)