git基础学习

Git

​ git是一个(本地)软件,主要用于代码或者文档的版本控制

功能

  • 数据备份,不仅能保存当前目录以及状态,还能保存历史目录和文件的状态
  • 多人并行开发
  • 权限控制,对项目的所有开发人员进行权限控制,以及对代码的贡献者进行审核
  • 历史记录,可以查看修改人,修改时间,修改内容等等,并且可以根据历史记录将项目恢复到某一个历史状态
  • 版本管理,保证每个版本之间的内容不重复,解决内存空间提升效率,git采用的是文件系统的快照方式
  • 分支管理,开发人员在各自的分支上进行开发,提升工作效率

​ Git是一个本地的软件,所有的一切内容都存储在本地计算机之中(本地仓库),是无法与别人共享的,如果想将内容与别人共享那就需要使用到远程仓库,将数据同步到远程仓库之中,其他开发人员就可以从远程仓库获取

GitHub、码云、GitLab

​ 上面的三种都是基于Git软件,准确的说他们都是Git的远程仓库,可以将不同的Git用户连接起来进行多人协作开发以及版本权限的控制

GitHub

​ 是一个基于Git的国际性仓库,由于是国际性仓库,所以用户群体非常庞大,质量非常高,很多大型的国际项目都选择使用GitHub来作为代码托管平台,但是由于其服务器在国外,所以对国内的用户十分不友好(网络问题),并且GitHub中的代码仓库要求必须公开,如果创建私有仓库的话需要按月付费

GitLab

​ 是一个可以自己搭建的Git仓库(一般用于大型公司内部),由于是自己搭建的公司内部仓库,所以一般仅支持公司内网访问,特点就是安全、免费、并且速度快

码云

​ 是一个基于GitLab搭建的国内仓库,访问速度快,但是用户质量群体没有GitHub高,出名的开源项目很少,优点是服务器在国内,访问起来比较友好,并且码云支持免费的个人私有仓库(企业私有库要收费)

安装Git

Git里的基本核心概念

  • 工作区(Workspace):就是我们的项目目录(我们代码存放的路径)
  • 暂存区(Index/Stage):一般存在于.git目录下的index文件夹中(git add 命令会将文件添加到暂存区)
  • 版本库(Local Repo):在工作区之中,会有一个.git隐藏文件夹,是我们在初始化git本地库的时候生成的,里面存放了我们所有的版本信息
  • 本地库(Repository):本地库存储在.git隐藏文件夹中(commit命令会将代码提交到本地库)
  • 远程库(Remote):是指GitHub或者码云或者GitLab

文件四种状态

​ Git所谓的版本控制,实际上就是对文件的一个控制,会检测文件是否修复,是否提交等各种信息,每次提交的时候都记录文件的修改时间,在Git中文件的状态有4种

  • Untracked:未跟踪,表示文件夹中存在这个文件,但是这个文件没加入到Git版本库之中,所以不参与版本控制,使用add命令可以让其变成Staged(暂存状态)
  • Staged:暂存状态,可以通过commit命令让其
  • Unmodify:文件已入库,未修改,也就是说版本库中的文件与当前文件内容一致,如果修改了会改变修改的状态(Modified)
  • Modified:文件已修改,可以通过add让其变成Staged暂存状态

查看文件状态

#查看指定文件状态
git status [filename]

#查看所有文件状态
git status

# git add .                  添加所有文件到暂存区

# git commit -m "消息内容"    提交暂存区中的内容到本地仓库 -m 提交信息

忽略文件

有些时候我们不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等

在主目录下建立".gitignore"文件,此文件有如下规则:

  1. 忽略文件中的空行或以井号(#)开始的行将会被忽略。
  2. 可以使用Linux通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符,方括号([abc])代表可选字符范围,大括号({string1,string2,…})代表可选的字符串等。
  3. 如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。
  4. 如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。
  5. 如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)
#为注释

*.txt        #忽略所有 .txt结尾的文件,这样的话上传就不会被选中!

!lib.txt     #但lib.txt除外

/temp        #仅忽略项目根目录下的TODO文件,不包括其它目录temp

build/       #忽略build/目录下的所有文件

doc/*.txt    #会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

本地仓库搭建

创建全新仓库

  • 创建全新的仓库,需要用git管理的项目的根目录执行
# 在当前目录新建一个Git代码库
$ git init

克隆远程仓库

  • 克隆远程目录,由于是将远程服务器上的仓库完全镜像一份至本地
# 克隆一个项目和它的整个代码历史(版本信息)
$ git clone [url]  # https://gitee.com/kuangstudy/openclass.git

git分支常用指令

# 列出所有本地分支
$ git branch

# 列出所有远程分支
$ git branch -r

# 新建一个分支,但依然停留在当前分支

$ git branch [branch-name]

# 新建一个分支,并切换到该分支
$ git checkout -b [branch]

# 合并指定分支到当前分支
$ git merge [branch]

# 切换分支
$ git checkout [branch]

# 删除分支

$ git branch -d [branch-name]

# 删除远程分支
$ git push origin --delete [branch-name]

$ git branch -dr [remote/branch]

提交一个文件的流程

# 添加文件到暂存区
$ git add [文件名称]

# 提交文件到版本库
$ git commit [文件名称] -m [文件]

# 推送到远程仓库
$ git push origin [分支名称]
查看文件的状态
git status  [fileName]
 vi hello
git status
 git add hello
git status
(重新指向的方式,适合从暂存区移除未提交过的文件)
git reset HEAD hello
git status
将目录下所有文件添加到暂存
git add .
git status

查看对应状态的文件:
查看修改过的文件
git ls-files --modified
查看暂存区的文件
git ls-files --cached
rm hello2
查看删除的文件
 git ls-files --delete
查看未跟踪的文件
git ls-files --o
删除文件:
从暂存区删除文件,不影响本地库
rm --cached hello2
从本地库中删除文件,不影响暂存区
rm hello2
Add的时候对比的是本地代码与暂存区是否一致,提交时候对比的是暂存区代码与版本库是否一致。
 
删除未跟踪的文件
git clean -f
查看本地文件与暂存区文件的差异
git diff hello3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值