Git详解一


初始化本地库

获取Git库有两种方式:

  • 一种是直接在工作目录下创建一个新的Git库
  • 另一种是从已有的库中克隆

创建新的Git库

方式一:

$ git init
该命令会在工作目录下创建一个.git目录(用于存放项目的版本历史、配置文件等)。

方式二:

$ git init [git_name]
Git将在工作目录下,创建一个名为git_name的文件夹,而.git目录存放在该文件夹中。所以可以简单地理解为,创建一个名为git_name的项目。

从现有库中克隆

克隆的命令为:

$ git clone [url]
该命令将会从url中表示的代码库中,将整个代码库都保存下来,并提取出最新版的文件版本。 

例子:

该示例,将会在工作目录下,创建一个test目录,然后从git://github.com/test/test.git上将所有版本下载下来,并提取出最新版本。

$ git clone git://github.com/test/test.git

与上面相同,这里可以在命令最后添加一个git_name字段,用于指定新项目目录的名称。

$ git clone git://github.com/test/test.git testgit

关于Git本地厂库初始化引用:我的Git教程 之 初始化本地库。作者:scutwang

设置标签

作用:

区分不同开发人员的身份。

辨析:

这里设置的签名和登录远程库(代码托管中心)的账号、密码没有任何关系。

命令

  • 项目级别/仓库级别:仅在当前本地库范围有效
git config user.name username ##username为用户名##
git config user.email 1540473@qq.com

信息保存在.git/config目录下:

[user]
        name = lc
        email = 1548570473@qq.com
  • 系统用户级别:登录当前操作系统的用户范围
git config --global user.name username ##username为用户名##
git config --global user.email good@163.com

信息保存位置:~/.gitconfig文件中。

  • 优先级别

    • 就近原则:项目级别优先于系统用户级别,二者都有时采用项目级别签名
    • 如果只有系统级别的签名,就以系统用户级别的签名为准
    • 二者都没有不允许

基本操作

状态查看

git status
查看工作区、暂存区状态

添加操作

git add [filename]
将工作区的“新建/修改”添加到暂存区

提交操作

git commit -m "commit message" [filename]
将暂存区的内容提交到本地库

查看历史记录

方式1:

git log

显示结果:

commit 420300a4acb7e38d5fc263666c251d5e1ca80608 (HEAD -> master)
Author: lc <1548570473@qq.com>
Date:   Tue Jun 12 10:31:39 2018 +0800

    second update file

commit 96e4329179cfd87adda38f2054b2711fc7af9467
Author: lc <1548570473@qq.com>
Date:   Tue Jun 12 10:22:28 2018 +0800

    first update file

commit de9d70393c4eb6cef3046fab6f40a8df93392e34
Author: lc <1548570473@qq.com>
Date:   Tue Jun 12 10:11:35 2018 +0800

    first commit file

方式2

git log --pretty=oneline

显示结果:

420300a4acb7e38d5fc263666c251d5e1ca80608 (HEAD -> master) second update file
96e4329179cfd87adda38f2054b2711fc7af9467 first update file
de9d70393c4eb6cef3046fab6f40a8df93392e34 first commit file

方式3:

git log --oneline

显示结果:

420300a (HEAD -> master) second update file
96e4329 first update file
de9d703 first commit file

方式4:

git reflog 
##如果是回到历史版本后,该方式可以站在当前版本处,可以查看之前的历史版本##

显示结果:

420300a (HEAD -> master) HEAD@{0}: reset: moving to 420300a
fa16aa4 HEAD@{1}: commit: delete a.txt
420300a (HEAD -> master) HEAD@{2}: reset: moving to 420300a
de9d703 HEAD@{3}: reset: moving to HEAD~1
96e4329 HEAD@{4}: reset: moving to HEAD^
420300a (HEAD -> master) HEAD@{5}: reset: moving to 420300a
96e4329 HEAD@{6}: reset: moving to 96e4329
420300a (HEAD -> master) HEAD@{7}: commit: second update file
96e4329 HEAD@{8}: commit: first update file
de9d703 HEAD@{9}: commit (initial): first commit file
##HEAD@{number}:表示移动多少不可以到达该历史状态。

前进后退

方式一:基于索引操作

git reset --hard id 

## hard参数:让工作区间和缓存区间都回到历史版本##
##版本索引id,可以通过git log 查看。

例子:

git reset --hard 420300a ##表示回到历史版本为420300a的版本##

方式二:基于^符号

git reset --hard HEAD^

##该方式只能回到历史,不能前进到现在##
##一个^符号代表回到前一个历史版本,连个代表回到第二个,.....##

例子:

git reset --hard HEAD^^
##表示回到当前版本的以前连个版本处##

方式三:使用~符号

git reset --hard HEAD~number ##number代表回到前几个版本##
##该方式也只能后退,不能前进##

例子:

git reset --hard HEAD~2
## 表示回到历史版本以前两个版本##
reset 命令的三个参数对比
  • –soft参数

    仅仅在本地仓库移动HEAD指针

  • –mixed参数

    在本地仓库移动HEAD指针,重置缓存区

  • –hard参数

    在本地库中移动HEAD指针,重置缓存区和工作区

删除文件并找回

前提: 删除前提,文件存在时的状态提交到了本地库。

操作:

  • 删除操作已经提交到本地库:指针位置指向历史记录。
git reset --hard [历史指针位置(也就是删除前历史版本)]
  • 删除操作尚未提交到本地库:指针位置指向HEAD
git reset --hard HEAD

比较文件差异

  • 将工作区中的文件和暂存区进行比较。
git diff [filename]

例子:工作区间中的apple.txt和本地缓存进行比较

git diff apple.txt
  • 将工作区中的文件和本地库历史记录比较
git diff [本地仓库中历史版本] [filename]

例子:工作取件中的apple.txt和本地仓库中最新记录比较。

git  diff HEAD apple.txt
  • 不带文件比较工作区中的所有文件
## 比较工作区和缓存取的所有文件##
git diff

## 比较工作区和本地仓库中所有文件##
git diff [本地仓库中的历史版本]

分支操作

  • 创建分支
git branch [分支名]
  • 查看分支
git branch -v
  • 切换分支
git checkout [分支名]
  • 合并分支

第一步:切换到接收修改的分支(被合并,增加新内容)上。

git checkout [被合并的分支名]

第二步:执行merge命令

git merge [有新内容分支名]
  • 解决冲突

冲突的表现:

<<<<<<< HEAD
bbb
=======
aaaa
>>>>>>> hot_fix

解决冲突:

第一步:编辑文件删除特殊符号。

第二步:把文件修改到满意程度保存退出

第三步:git add [filename]

第四步:git commit -m “commit message”

注意:此时commit一定不能带具体文件名

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值