本文目录
一、 写在前面
最近学习了Git(分布式版本控制系统)这个强大的工具,自己也算是有点小小的收获吧,在这里写出来作为学习笔记!
Git的版本控制像一颗树一样,可以有很多不同的分支,然后每一次commit都会产生一个更小的分支,版本回溯就像是寻找父亲节点一样,不同的分支代表了项目库不同的版本,正所谓“版本控制”!“分布式”是指它可以由多地多人共同协作完成一个项目,我感觉是这个。
二、Git简介
首先Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git的读音为/gɪt/。 Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。
三、GitBash下载
- GitBash 是一款好用的软件,通过类似命令行的操作来让我们对自己的代码仓库进行版本控制,下载地址点击这里如果在自己的浏览器中下载不了的,可以按F12开发者工具打开网页源码,找到下载链接,然后复制链接迅雷打开下载,速度很快的。
打开网页源码,找到下载链接
复制链接迅雷打开下载
默认路径设置 :把起始位置改为你想要的初始位置,比如上图是d:\GitHub,这样操作起来比较方便,如果你要建一个库,就可以在起始位置下直接输入了,不用写一大串的绝对路径了呢。
四、如何建一个本地仓库
(1)进入GitBash。
(2)如果已经有项目文件直接找到路径 cd +文件名 打开。
(3)也可以用命令 mkdir + 文件名 在当前目录下新建一个然后cd打开。
(4)git init (初始化),看到弹出 Initialized empty Git repository in D:/GitHub/test/.git/ 字样时,
就说明你成功了,我们可以看到下面还弹出了一行代码,其中master表示位于主分支,这也体现了它的版本控制。
(5)此时可以进入test这个文件,在目录下会看到一个隐藏文件 .git ,里面是一些系统配置,不要动它就好了。
(6)仓库建好之后要添加代码直接把文件存在这个目录下。
五、如何连接远程仓库,以GitHub为例
1.首先在github上建立远程仓库
2.然后复制ssh或者https(这里以ssh为例)
3.github输入命令
(这里仓库名显示为‘-’,有可能是中文字符不显示,路径不能出现中文字符)
进入-文件
可以看到刚刚在GitHub上创建的一个README.md文件
六、GitBash另外的一些基本操作
~
git remote :关联远程仓库
例如:git remote add origin git@github.com:yourname/youremail.git
~
git log:查看修改日志,当我们对本地仓库进行了不理想的修改,怎么办呢?这时git的优势就体现出来了,依据版本号可以回溯到以前的任何版本,对于一些大型项目的开发是非常方便的
git status :查看当前库的状态
如:在主分支master、没有commit记录
git push :同步,把本地库的所有内容推送到远程库上
例如:git push -u origin master
git commit :更新本地仓库信息 ‘m’代表message
例如:git commit -m “first commit”
git clone :克隆远程库比如github上的,如下图 本来以为是同步更新(远程主动更新本地),clone hello_world 后发现在hello-world 目录下又复制了一个hello-world git库,这也就是说只能在远程克隆,不能在远程更新后返回本地,而github又支持直接在界面上修改代码,对我来说这是一个坑(一般人做项目肯定不会在GitHub上直接修改,是我多虑了)。划重点–
格式:git clone ssh/https
git reset:版本回溯
如:git reset – hard +版本号前八位
先查log(日志),按照版本号可以回溯到任意时刻。
git reset – hard HEAD^ (返回上一次commit前)
这篇讲的很透彻 https://www.jianshu.com/p/c2ec5f06cf1a
总结: 如果是自己做项目开发,可以现在本地建立仓库,然后再推送到远程
如果是借鉴别人的优秀代码,可以先fork再clone到本地
七、其他一些软件也具有版本控制功能
~
不过要连接git,例如github提供的桌面版Github Desktop还有python IDE pycharm,界面操作虽然爽而且简单直观,但是原生的gitbash可以在不同的os上操作,可移植性更强,他不香吗hhh
八、GIT 传输和加密机制
~
采用非对称加密方式,公钥和密钥 ;也可使用https协议在本地仓库和远程仓库之间传输信息 对于如何绑定本地GIT和GitHub这个不详细介绍了,因为忘记截图了。 可以参考 http://blog.csdn.net/acmman/article/details/77621253