Git的配置与使用:
1.git的介绍
进入Git的官网,第一句话:Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.(Git是一个免费的、开源的分布式版本控制系统,旨在快速高效地处理从小型到非常大的项目。)
分布式版本控制系统:
-
版本控制:是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况
其中最主要的功能就是追踪文件的变更,常见的工具有Git、SVN等
-
分布式:简单说就是将数据放在不同的服务器上,防止服务器不会因损坏或者网络问题,造成不能工作的情况.
2.git的安装、配置
下载:
- 去官网下载:https://git-scm.com/
- 找镜像下载比较快:http://npm.taobao.org/mirrors/git-for-windows/
安装:
- 一路下一步下一步就可(注意文件安装的路径,默认C,可以改)
配置:
- 在桌面空白地方有点就有一个git bash here双击即可启动git的bash界面
-
所有的配置文件,其实都保存在本地!
#查看本体配置 git config -l #查看系统config git config --system --list #查看当前用户(global)配置,第一次运行的时候什么都没有 git config --global --list
-
设置用户名与邮箱(用户标识,必要)
git config --global user.name "******" #名称 git config --global user.email 24736743@qq.com #邮箱 峥@DESKTOP-V5168QI MINGW64 /e/新桌面 $ git config --global --list user.name=astonish user.email=xgmdws@163.com
-
查看配置文件,在C盘—>当前用户—>.gitconfig文件,里面就是用户名和邮箱信息
3.git运行原理(重点)
git有4个工作区域:
- 工作目录(Working Directory):平时存放项目代码的地方
- 暂存区(Stage/Index):用于临时存放你的改动
- 本地仓库(Repository或Git Directory):安全存放数据的位置,这里面有你提交到所有版本的数据
- 远程仓库(Remote Directory):托管代码的服务器,将项目放到服务器上
git文件的状态:
- Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.
- Unmodify: 已跟踪, 未修改, 即版本库中的文件快照内容与文件夹中完全一致.这种类型的文件有两种去处, 如果它被修改, 而变为Modifified. 如果使用git rm移出版本库,则成为Untracked文件
- Modifified: 已跟踪, 已修改, 并没有进行其他的操作.这个文件也有两个去处, 通过git add可进入暂存staged状 态, 使用git checkout 则丢弃修改过, 返回到unmodify状态,这个git checkout即从库中取出文件, 覆盖当前修改 !
- Staged: 已跟踪,暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状 态. 执行git reset HEAD fifilename取消暂存, 文件状态为Modifified
工作流程:
-
1.在工作目录中添加、修改文件;
-
2.将需要进行版本管理的文件放入暂存区域;
-
3.将暂存区域的文件提交到git仓库;
-
4.将本地仓库代码push到远程仓库;
4.Git本地仓库的搭建
方式1:在本地创建一个全新的仓库(.git属于隐藏文件,需要勾选隐藏的项目才可以看得见)
创建一个目录用来当本地仓库,在该目录空白地方右键:git bash here
#查看当前目录
峥@DESKTOP-V5168QI MINGW64 /d/git
$ pwd
/d/git
#初始化一个本地仓库
峥@DESKTOP-V5168QI MINGW64 /d/git
$ git init
Initialized empty Git repository in D:/git/.git/
方式2:从远程仓库克隆一个仓库到本地
从远程找到一个仓库,复制下仓库地址,找到一个不是本地仓库的目录,右键git bash here
输入命令:git clone 远程仓库地址
峥@DESKTOP-V5168QI MINGW64 /f/test_git/git
$ git clone https://gitee.com/astonish/data-structure-and-algorithm.git
Cloning into 'data-structure-and-algorithm'...
remote: Enumerating objects: 6, done.
remote: Counting objects: 100% (6/6), done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 6 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (6/6), 13.35 KiB | 46.00 KiB/s, done.
5.git的使用
本地仓库的操作(文件只有在暂存区才能被提交)
#查看文件状态
git status 文件名 [-s]
#将文件添加到暂存区
git add 文件名
#将暂存区的文件取消暂存
git reset 文件名
#将暂存区的文件提交到本地仓库,日志信息是必写的,不写的话执行命令了也会跳到相应的文件让写日志信息(就是这次提交你干了啥)
git commit 文件名 -m "日志信息"
#删除工作区的文件
git rm 文件名
#撤销删除
git restore 文件名
#查看日志记录
git log
忽略提交时的文件
一般我们总会有些文件无需纳入Git 的管理,也不希望它们总出现在未跟踪文件列表。通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。 在这种情况下,我们可以在工作目录中创建一个名为 .gitignore 的文件(文件名称固定),列出要忽略的文件模式。下面是一个示例:
- 忽略文件中的空行或以井号(#)开始的行将会被忽略。
- 可以使用Linux通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符,方括号([abc])代表可选字符范围,大括号({string1,string2,…})代表可选的字符串等。
- 如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。
- 如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。
- 如果名称的最后面****是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)。
# no .a files
*.a 忽略以.a结尾的所有文件
# but do track lib.a, even though you're ignoring .a files above
!lib.a 忽略以.a结尾的所有文件,除去lib.a文件
# only ignore the TODO file in the current directory, not subdir/TODO
/TODO 表示要忽略TODO目录下的文件,但子目录中的文件不忽略。
# ignore all files in the build/ directory
build/ 忽略build目录下的所有文件
# ignore doc/notes.txt, but not doc/server/arch.txt
doc/*.txt 忽略doc目录下所有以.txt结尾的所有文件,但子目录中的不忽略
# ignore all .pdf files in the doc/ directory
doc/**/*.pdf 忽略doc目录以及子目录下所有以.pdf结尾的文件
远程仓库操作
#查看本地仓库管理的远程仓库
git remote [-v]
#添加远程仓库(在该本地仓库中)
git remote add 仓库路径
#从远程仓库克隆
git clone 仓库路径
#移除本地仓库和远程仓库的关联
git remote rm 关联名(默认为origin)
#从远程仓库获取最新版本到本地仓库,不会自动合并处理
git fetch
#合并某一个分支
git merge 分支名
#从远程仓库获取最新版本并merge到本地仓库(自动合并处理)
git pull
#推送到远程仓库
git push 关联名称 上传的分支
6.IDEA集成git(重点)
从本地创建一个仓库忘远程仓库上传
1.创建一个项目,将该项目交给git管理
2.将文件加入到暂存区中
4.将暂存区中的文件上传到本地仓库中,注意日志
5.将本地仓库的文件推送到远程仓库中
第一次推送的时候需要输入gitee的用户名和密码,输入后再进行推送
第一次推送的时候会报一个Push to origin/master was rejected错误,是因为本地仓库和远程仓库的代码不一样。简单来说就是代码冲突了,复杂来说就是你动了不该动的代码。
解决方法:执行命令:git pull origin master --allow-unrelated-histories重新拉取,然后将文件添加到本地仓库,再进行远程的推送,在gitee中查看即可
6.从远程仓库拉取最新信息
还有一个分支的使用,我就不再者进行介绍了,需要的可以去https://gitee.com/astonish/gitdemo01.git 里面看分支的操作和使用。