git版本控制工具使用记录

博主也是第一次尝试使用git,下面内容如有错误望指正。

因为Git是分布式版本控制系统,所以需要填写用户名和邮箱作为一个标识。

git config --global user.name "zw574150903"

git config --global user.email "574150903@qq.com"
git config -l  //查看以配置的信息
1、创建版本库
什么是版本库?版本库又名仓库,英文名repository,你可以简单的理解一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改,删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻还可以将文件”还原”。


比如:新建一个d盘下的gitTest版本库
进到对应目录下 通过命令 git init 可以把这个目录编程git可以管理的仓库
这时候你当前gitTest目录下会多了一个.git的隐藏目录,这个目录是Git来跟踪管理版本的,没事千万不要手动乱改这个目录里面的文件,否则,会把git仓库给破坏了。如下:
2、把文件添加到版本库中。
首先要明确下,所有的版本控制系统,只能跟踪文本文件的改动,比如txt文件,网页,所有程序的代码等,Git也不例外,版本控制系统可以告诉你每次的改动,但是图片,视频这些二进制文件,虽能也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是知道图片从1kb变成2kb,但是到底改了啥,版本控制也不知道。


这里提一下git库所在的文件夹中的文件大致有4种状态:
Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过 git add 状态变为 Staged.
Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为 Modified. 如果使用 git rm移出版本库, 则成为 Untracked文件
Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过 git add可进入暂存 staged状态, 使用 git checkout 则丢弃修改过, 返回到 unmodify状态, 这个 git checkout即从库中取出文件, 覆盖当前修改
Staged: 暂存状态. 执行 git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为 Unmodify状态. 执行 git reset HEAD filename取消暂存, 文件状态为 Modified

这里接着上面创建完版本库之后做下测试:
创建一个test.txt文件,写了一行“新建”

然后查看文件状态 git status

此时状态显示为Untracked,未跟踪 提示使用git add来暂存
这时可能会出现一个问题

出现这个警告的原因
Git提供了一个换行符检查功能(core.safecrlf),可以在提交时检查文件是否混用了不同风格的换行符。这个功能的选项如下:
  • false - 不做任何检查
  • warn - 在提交时检查并警告
  • true - 在提交时检查,如果发现混用则拒绝提交

和一个自动转换换行符的功能(core.safeautocrlf),配置自动转换换行符的模式

  • true-在提交时转换为LF,检出时转换为CRLF
  • input-提交时转换为LF,检出时不转换
  • false-提交检出均不转换
下面是在网上找到的一个个人觉得较为合理的配置。
#### git中设置core.autocrlf####

假如你正在Windows上写程序,又或者你正在和其他人合作,他们在Windows上编程,而你却在其他系统上,在这些情况下,你可能会遇到行尾结束符问题。这是因为Windows使用回车和换行两个字符来结束一行,而Mac和Linux只使用换行一个字符。虽然这是小问题,但它会极大地扰乱跨平台协作。

Git可以在你提交时自动地把行结束符CRLF转换成LF,而在签出代码时把LF转换成CRLF。用`core.autocrlf`来打开此项功能,如果是在Windows系统上,把它设置成`true`,这样当签出代码时,LF会被转换成CRLF:

$ git config --global core.autocrlf true(windows默认)

Linux或Mac系统使用LF作为行结束符,因此你不想 Git 在签出文件时进行自动的转换;当一个以CRLF为行结束符的文件不小心被引入时你肯定想进行修正,把`core.autocrlf`设置成input来告诉 Git 在提交时把CRLF转换成LF,签出时不转换:

$ git config --global core.autocrlf input

这样会在Windows系统上的签出文件中保留CRLF,会在Mac和Linux系统上,包括仓库中保留LF。

如果你是Windows程序员,且正在开发仅运行在Windows上的项目,可以设置`false`取消此功能,把回车符记录在库中:

$ git config --global core.autocrlf false
是因为我刚刚创建文件时,是用git bash的vi编辑器创建
里面的换行符用的就是LF我们可以换个编辑器看下


果然是有一个LF
然后我们在windows下直接创建一个
这里的换行符就是crlf了
这时我们提交这个text1.txt
就不会有警告了
然后就是提交


理解工作区与暂存区的区别?

  工作区:就是你在电脑上看到的目录,比如目录下testgit里的文件(.git隐藏目录版本库除外)。或者以后需要再新建的目录文件等等都属于工作区范畴。

  版本库(Repository):工作区有一个隐藏目录.git,这个不属于工作区,这是版本库。其中版本库里面存了很多东西,其中最重要的就是stage(暂存区),还有Git为我们自动创建了第一个分支master,以及指向master的一个指针HEAD。

  我们前面说过使用Git提交文件到版本库有两步:

  第一步:是使用 git add 把文件添加进去,实际上就是把文件添加到暂存区。

  第二步:使用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支上。


使用git log 来查看历史记录


修改文件

给文件添加内容(这个文件是重新弄的,前面的不小心没保存截图清了一些)

上面的文件第一次提交时空文本,第二次修改是如下内容


使用 git diff 查看当前目录文件和暂存区文件不同,这个命令还有一些其他参数可以比较其他目录的一些文件,之后再做了解


这时我们在查看文件状态,文件现在是被修改的状态


这时我们可以使用git add来讲修改的文件名保存到暂存区,或者是使用git checkout --来回退修改内容


git add 之后 再次提交,保存到分支。



这时我们看日志


觉得这里东西太多的话,可以用git log --pretty=oneline 这样每个记录就只有单行了


还有前面在git add 提交到暂存区时,还有另一个选项是 git checkout -- filename

这里我们在来做一次修改,来试试git checkout -- filename这里注意 要加--,不然会新建分支(ps:我没试过,对分支还搞的不是很清楚。)

修改文件



这时我们选择git checkout -- test.txt


查看有什么变化


又回到了没修改之前的版本

还有一种情况就是,一共修改了两次,第一次修改后提交到暂存区,第二次修改之后撤销了修改,那么这个时候,就回到了第一次修改后提交到暂存区那时候的状态。

删除文件:

这里我们添加两个文件

aaa.txt bbb.txt


删除文件,我们可以直接在目录下删除,也可以使用rm 文件名删除

想从版本库删除,这里在git commit 就ok了


如果删除后,还没提交,想从版本库里在恢复出来可以如下操作


版本回退

现在我们多做几次提交,多形成几个版本

这里我在上面的基础上提交了上次


现在我想回到上一个版本version 2

git reset  --hard HEAD^



如果返回上上个版本 name在head^多加个^

但是如果想返回100个版本呢,这样显然是不合适的,这里我们可以用git reset  --hard HEAD~100来简便操作


这就回到了最开始新建那时候的版本了

那么还有一个问题,我想回到version 3呢

git reset  --hard 版本号

版本号可以通过git reflog来查看



这样就ok了


提交到github远程仓库

首先生成ssh秘钥(有了则不用,用户目录下找到.ssh目录,里面有秘钥就不用了)

在~目录下执行 ssh-keygen -t rsa -C "youremail@example.com"



然后到github上面setting里设置ssh keys,将刚刚生成的id_rsa.pub的内容复制到下面


添加就秘钥就加好了

然后

new一个版本库



把这个url复制过来

在本地添加远程版本库,推送到远程版本库

必须配置好user 和email 前面有

git remote add origin https://github.com/zw574150903/gitTest.git

git push -u origin master(第一次有-u参数,后面就可以不用带参数了)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值