版本控制:Git入门

之前只用过SVN,用的也比较傻瓜,买了本Git的书但是表示看不懂啊。现在项目里要用到了,本着一切学不会的东西都可以在项目里学会的态度,又一次开始研究Git,以下主要内容来自《廖雪峰的Git教程》(写得真的很通俗易懂),再结合一下我的实践。


所有的版本控制都是针对文本内容,word这一类二进制内容(?)所谓版本,是文件快照,不能比较其差异,只能当做备份的网盘使用。所有的版本控制,只能跟踪文本文件的改动。而图片、视频、word这些二进制文件没法追踪其变化。


集中式VS分布式:

集中式版本控制:比如SVN,版本库集中存放在中央服务器,干活的时候用自己的电脑从服务器获取最新版本,然后在本地修改再提交。集中式版本控制必须联网才能工作。

分布式版本控制:没有中央服务器,每个电脑上都有完整的版本库,这样工作不需要联网,多人合作时只需要将各自的修改推送给对方。安全性比较好,通常分布式版本控制里也   有一台中央服务器,方便大家交换修改信息,但没有它大家也是一样的干活。


1、创建版本库:

$git init
将当前目录变成Git版本库,此时目录里会出现.git目录,如果没有出现则是被隐藏了,ls -ah可以查看所有文件

千万不要采用Windows自带的记事本编辑文本文件。。。。。

2、创建文件、加入版本库

在含有.git的目录下创建一个新文本文件,git add将文件添加到仓库

$git add readme.txt
没有任何显示说明添加成功

git commit将文件提交到仓库,-m后面表示要输入的注释内容,一次commit可以提交多个文件

$git commit -m "comment"
修改readme文件内容,查看仓库状态

说明readme.txt被修改了,但是还没有将修改提交

$git diff
查看difference,这里面如果有中文会显示乱码,sad
提交修改和提交新文件是一样的两步,git add和git commit

git add readme.txt以后


和没有add之前状态稍有不同,再commit

版本回退:

HEAD:指向当前版本HEAD^:上一版本 HEAD^^:上上一个版本 HEAD~100:往上100个版本

回到当前版本:已经做了改动,但是想抛弃这些改动,回到上次提交时的状态

$ git reset --hard HEAD^//回到上一版本
查看状态、log时就跟最后一个版本没出现过一样

如果要找回就得往上查找删除掉的版本的commit id,然后:git reset --hard id

可以通过git reflog查看每次提交的命令和id

工作区和暂存区

工作区:电脑里能看到的目录,比如learngit。工作区里的.git文件,是Git的版本库,里面存放的最重要的东西就是称为stage或者index的暂存区,还有git自动创建的第一个分支master,以及指向master的第一个指针HEAD。

git add 添加文件,进暂存区

git commit 提交修改,将暂存区的所有内容添加到当前分支

需要提交的文件修改统统放到暂存区,然后一次性提交暂存区的所有修改

管理修改:

为什么Git比其他工具优秀?因为git跟踪并管理的是修改,而非文件。

测试:

第一次修改——add(放入暂存区)——第二次修改(没有放入暂存区)——commit(只将暂存区的第一次修改提交了)


撤销修改:

$git checkout -- file
修改后没有add到暂存区,撤销后回到上一个版本库

已经add以后又做了修改,撤销后回到添加到暂存区以后的状态

总之是回到最近的一次git commit或者git add时的状态(撤销一次修改)

删除文件:
add一个新文件,可以直接删除,或者:
$rm test.txt //非git命令
add或者commit一个新的文件以后,删除了文件,状态改变
确实要删除:
$git rm test.txt
$git commit......
删错了,撤销删除
$gti checkout -- test.txt


远程仓库

目前为止的功能都是集中式版本控制工具里有的。

实际情况,用一台电脑充当服务器,全天开启,其他人每个人从服务器上克隆一份到自己的电脑,把各自的提交推送到服务器里,并从服务器中获取别人的提交,

Github就是提供Git仓库托管服务的,可以获取免费的Git远程仓库

本地Git仓库和Github仓库之间通过SSH加密,需要将本地的 用户/.ssh/id_rsa.pub的内容加入到Github里,这样Github才能识别是你的推送而不是别人

在Github上的Git仓库虽然只有自己能改动,但是任何人都能看到,要想让别人看不到,1是交钱把仓库变成私有的 2是自己搭建Git服务器


GitHub使用
添加远程库
Github上new 一个新仓库,界面上提示,1、在本地新建一个git仓库,再关联到Github远程库 2、将本地已有的仓库与之关联
采用
$git remote add origin git@github.com:zChord/learngit.git
将本地仓库关联到Github仓库。添加后远程库的名字就是origin
将本地库的内容推送到(push)到远程库上:
$git push -u origin master
第一次push时带着-u参数,Git不但会把本地分支内容推送到远程新的master分支,还会把本地的master分支和远程的master分支关联起来,以后的推送和拉取就不需要该参数了
推送完以后就会发现,Github中的内容已经和本地一模一样了

从现在起,只要本地做了提交,就可以通过命令
$git push origin master
将本地master分支修改推送至Github,分布式版本库诞生!

从远程库克隆
新建一个远程库gitskills(可以选择生成一个readme文件用于克隆),在想要建本地库的目录下输入命令
$git clone git@git.com:zChord/gitskills.git
可以看到代码被下载到本地
多人开发的时候,每个人从远程克隆一份即可、
从远程库拉取新代码
$git push origin master




git命令:

查看用户名和邮箱地址:

$git config user.name

$git config user.email

修改用户名和邮箱:

$git config --global user.name "name"

$git config --global user.email "mail"

--global表示这台机器上的所有Git仓库都使用这个配置

查看修改日志:只有日期、作者、注释

$git log

$git log --pretty=oneline(简洁版)




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值