git(1) 本地仓库

git 开发笔记(一) Git 仓库文件穿梭

1.安装git

sudo apt-get install git

2.git初始化配置

安装完成后,还需要最后一步设置,在命令行输入:

$ git config --global user.name “Your Name”

$ git config --global user.email "email@example.com"

因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。你也许会担心,如果有人故意冒充别人怎么办?这个不必担心,首先我们相信大家都是善良无知的群众,其次,真的有冒充的也是有办法可查的。

注意git config命令的–global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

3.创建版本库

什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

所以,创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录:

$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit
pwd命令用于显示当前目录。在我的Mac上,这个仓库位于/Users/michael/learngit。

如果你使用Windows系统,为了避免遇到各种莫名其妙的问题,请确保目录名(包括父目录)不包含中文。

第二步,通过git init命令把这个目录变成Git可以管理的仓库:

$ git init

Initialized empty Git repository in /Users/michael/learngit/.git/

瞬间Git就把仓库建好了,而且告诉你是一个空的仓库(empty Git repository),细心的读者可以发现当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。

如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见。
也不一定必须在空目录下创建Git仓库,选择一个已经有东西的目录也是可以的。不过,不建议你使用自己正在开发的公司项目来学习Git,否则造成的一切后果概不负责

4.把文件添加到版本库

a.初始化版本库

$ git init

b.创建文件 将文件放入到版本库所在的位置

$ git add

c.添加文件之后可以进行提交

$ git commit

现在总结一下今天学的两点内容:

初始化一个Git仓库,使用git init命令。

添加文件到Git仓库,分两步:

第一步,使用命令git add ,注意,可反复多次使用,添加多个文件;

第二步,使用命令git commit,完成。

5.修改仓库文件

a.查看修改文件状态

$ git status

b.查看修改文件的具体改变内容

$ git diff ===》git add

c.查看修改的内容主题 提交日志

$ git log ===>也可以减少太多的输出信息 加上 --pretty=oneline 参数

显示如下:

880b2ab04fd183f5631e932c0208f1b5d6c554b5 (HEAD -> master) add time
c955ff23d18c436e9753b28c5f3b742c26d9418d add file
c68201985f9b00cbd9719668e73ac6f820aeac78 wrote a readme file

其中前面的数字代表的是 commit id(版本号) 与SVN 不同 Git的 commit id 不是
1,2,3,递增的数字 而是一个SHA1计算出来非常大的数字 使用该方法的目的是为了多人开发时造成冲突

补充:SHA1

安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准 (Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要。 SHA1有如下特性:不可以从消息摘要中复原信息;两个不同的消息不会产生同样的消息摘要,(但会有1x10 ^ 48分之一的机率出现相同的消息摘要,一般使用时忽略)

6.版本回退
在Github中使用 HEAD来表示当前版本 也就是最新的版本 其中HEAD^代表的是上一个版本 Head^^代表的是上上一个版本 当版本数较多时 就使用HEAD~100 (例如表示100个版本)

$ git reset --hard HEAD^ ====》关于hard参数的解释

$ cat read.txt ===>使用 read.txt 来查看当前文件的状态

$ git reset --hard (可以回到未来的版本)

总结:在git中 HEAD 相当于指针 当你回退版本时 也会回来

7.git 中的暂存区(stage)

(1)git add 作用是相当与将文件提交到暂存区 git commit 作用则是一次性的把暂存区中的所有修改添加到分支中去

(2)管理修改

git 管理的是修改而不是文件 git commit只针对stage(暂存区)中的数据起到作用
如果不进行git add 就不会对数据起到作用

(3)撤销修改(在还未提交之前)

a. 情况1:

$ git checkout --readme.txt ===>使用该命令可以使readme.txt在工作区的修改全部撤销 回到git add 或者git commit 的初始状态

b.情况2:

糟糕的文件添加到了暂存区了 但是还没有commit 解决措施:

$ git reset HEAD readme.txt =====>将暂存区的修改给撤销掉 重新回到
工作区 由此克制 git reset 不仅可以回退版本 而且可以将暂存区的修改回退到工作区

c. 情况3:

不仅修改错了文件 而且将其提交到了版本库 通过版本回退来解决问题 (在还没有把本地版本库推送到远程之前 Git 是分布式控制系统)====>不过如果已经提交到了远程库则会造成麻烦

小结
又到了小结时间。

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout – file。

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

8.删除文件

首先,add并且提交一个测试文件
其次,将该目录中的测试文件删除 删除过中使用git status 会显示文件已经删除

a.文件误删

$ git checkout – test.txt (一键还原文件)

b.确实删除文件

$ git rm test.txt (从版本库中删除该文件)

$ git commit -m “删除文件”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值