Git
Git和其他版本控制的区别
- 其他大部分版本控制都是以文件变更列表的方式存储信息,将它们存储的信息看做是一组基本文件和每个文件岁时间逐步累积的差异(它们通常称作基于差异的版本控制)
- git更像是把数据看做是对小型文件创建一个快照并保存这个快照的索引,为了效率,如果文件没有修改,git不再重新存储该文件,而是只保留一个链接指向之前存储的文件,git对待数据更像是一个快照流.
- 在git中绝大多数操作都只需要访问本地文件和资源,一般不需要来自网络上其他计算机的信息
- git不需要外链到服务器去获取历史,只需要从本地数据库中读取
- git一般只添加数据,执行的git操作几乎只往git数据库中添加数据,很难让git执行任何不可逆操作,或者让它以任何方式清除数据,也就使得我们在使用git时,可以做各种尝试,而不用更担心把事情弄糟的危险
Git的三种状态
- 已提交(committed) 已修改表示修改了文件,但还没保存到数据库中。
- 已修改(modified) 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中
- 已暂存(staged) 已提交表示数据已经安全地保存在本地数据库中。
Git的基本工作流程
- 在工作区中修改文件。
- 将你想要下次提交的更改选择性地暂存,这样只会将更改的部分添加到暂存区。
- 提交更新,找到暂存区的文件,将快照永久性存储到 Git 目录。
Git的安装
- linux安装 sudo dnf install git-all
- window安装(安装包傻瓜式)
获取Git仓库
通常有两种获取 Git 项目仓库的方式:
- 将尚未进行版本控制的本地目录转换为 Git 仓库
- 从其它服务器 克隆 一个已存在的 Git 仓库。
已存在的目录初始化仓库
- 打开已存在的目录
- 执行git命令 git init
克隆现有的仓库
- 基础命令 git clone https://github.com/libgit2/libgit2
- 克隆并自定义本地仓库名 git clone https://github.com/libgit2/libgit2 library2
记录每次更新到目录
- git status 查看文件的git的状态
- 如果提示"Not a git repository"意味着不是一个git项目,需要使用git init进行初始化
- 如果提示"Untracked file"意味着,文件没有被追踪
- 跟踪新文件
- git add readme 添加一个文件进行追踪,并处于暂存状态
- git add . 添加当前git所在的目录所有文件
- 提交更新
- git commit 仅提交
- git commit -m "注释的内容"
- 建立连接 git remote add origin https://github.com/wp520133/README.git
- 上传 git push -u origin master
Git解决频繁输密码
- 打开管理需要上传的项目中的.git目录下的config
- 修改路径 https://wp520133:xxxx@github.com/wp520133/README.git xxxx表示github用户密码
下载github项目
- 直接download zip下载
- sourceTree
- 在gitgub主页上,获取一个地址
- sourceTree点击新仓库,从url克隆
- 将"xxxx.git"的地址,赋值到sourceTree中的url中
- 选择,存放路径即可
pull
- 作用,本地和远端已经建立连接的情况下,将远端的代码同步到本地(让本地保持和远端一样),这个过程叫做pull
- 在sourceTree中,使用拉取,点击确定
切换版本
切换版本,可以快速预览当前以及之前的版本,在sourceTree直接双击。
多次commit后在push
- 如果在本地项目进行修改之后,sourceTree会提示修改文件的个数
- 如果想使用sourceTree进行提交,需要先勾选暂存的文件,需要什么就提交什么,允许部分提交,提交之后,此时远端不会发生变化,需要进行一次push(推送),让远端同步本地的代码,让远端和本地保持一致
- 关于提交的时间,以每次commit为准,与push无关。
提交的时候同时推送
在提交写注释的时候,最下方有一个,立即推送并更变,这个选项表示提交并且推送到远端
关于Git的忽略文件
在上传git项目的时候,有些不需要上传的文件,比如,python的缓存以及编译文件,包括report的报告,还有pycharm的.idea等,如果不想上传,需要做一个忽略文件的操作,忽略的名字叫做.gitignore
sourceTree
- 上传
- github或者码云创建一个项目,获取到url地址
- 打开sourceTree创建一个本地仓库
- 添加仓库
- 设置添加远程仓库建立
- 下载 克隆远程仓库项目到本地
- 拉取 每次source打开需要进行拉取
- 提交并推送 项目做出修改、删除或者添加需要进行提交