git 基本使用及命令
git 基本使用及命令
dleei版本控制
版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术
·实现跨区域多人协同开发
·追踪和记载一个或者多个文件的历史记录
·组织和保护你的源代码和文档
·统计工作量
·并行开发、提高开发效率
·跟踪记录整个软件的开发过程
·减轻开发人员的负担,节省时间,同时降低人为错误
版本控制分类
集中版本控制
svn
所有的版本数据都保存在服务器上,协同开发者从服务器上更新或上传自己的修改
所有的版本数据都存在服务器上,用户的本地只有自己以前所同步的版本,如果不连网的话,用户就看不到历史版本,也无法切换版本验证问题,或在不同分支工作。而且,所有数据都保存在单一的服务器上,有很大的风险这个服务器会损坏,这样就会丢失所有的数据,当然可以定期备份。代表产品:SVN、CVS、VSS
分布式版本控制
git
所有版本信息仓库全部同步到本地的每个用户,这样就可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时push到相应的服务器或其他用户那里。由于每个用户里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用。
git与svn最主要区别
SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而工作的时候,用的都是自己的电脑,所以首先要从中央服务器得到最新的版本,然后工作,完成工作后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,对网络带宽要求较高。
Git是分布式版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库,工作的时候不需要联网了,因为版本都在自己电脑上。协同的方法是这样的:比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
Git是目前世界上最先进的分布式版本控制系统
git历史
同生活中的许多伟大事物一样,Git诞生于一个极富纷争大举创新的年代
Linux内核开源项目有着为数众多的参与者。绝大多数的Linux内核维护工作都花在了提交补丁和保存到归档的繁琐事务上(1991-2002年间)。到2002年,整个项目组开始启用一个专有的分布式版本控制系统BitKeeper来管理和维护代码。
到了2005年,开发BitKeeper的商业公司同Linux内核开源社区的合作关系结束,他们收回了Linux内核社区免费使用BitKeeper的权力,这就迫使Linux开源社区(特别是Linux的缔造者Linus Torvalds)基于使用BitKeeper时的经验教训,开发出自己的版本系统。也就是后来的Git!
Git是目前世界上最先进的分布式版本控制系统。
Git是免费、开源的,最初Git是为辅助Linux内核开发的,来替代BitKeeper!
Linux和Git之父林纳斯托沃兹(Linus Benedic Torvalds)1969、芬兰
git下载安装
常用Linux命令
pwd:显示当前所在的目录路径
Is(Il):都是列出当前目录中的所有文件,只不过ll列出的内容更为详细
touch:新建一个文件如touch index.js就会在当前目录下新建一个index.js文件
rm:删除一个文件,rm index.js就会把index.js文件删除
mkdir:新建一个目录,就是新建一个文件夹
rm -r:删除一个文件夹,rm- r src 删除src目录
reset重新初始化终端/清屏
clear清屏
history查看命令历史
help帮助
exit退出
#表示注释
git命令
配置用户名: git config –global user.name ‘用户名’
配置邮箱 : git config –global user.email ‘邮箱’
初始化空的git版本库: git init
添加单个文件到暂存区:git add 文件名
添加目录下所有到暂存区:git add .( git add . 当前目录下所有文件添加到暂存区 add和点中间有空格哦)
将暂存区文件提交到版本库:git commit -m ‘提交的内容说明’(内容说明为空则会中止提交)
一些小的修改无需先暂存再提交,直接git commit -am ‘提交内容说明’即可
查看日志:git log
在一行显示简略信息: git log –oneline
查看文件提交前后差别: git log -p 文件名
查看单个文件名的提交日志: git log 文件名
查看工作树、暂存区、最新提交之间的差别: git diff
查看状态: git status
版本回退: git reset –hard 版本号
查看仓库所有的操作日志 git reflog
忽略文件: .gitignore
创建分支 :git branch 分支名
查看分支 :git branch
查看本地仓库分支和远程仓库分支:git branch -a
切换分支 :git checkout 分支名
git checkout - (连字符-
代替分支名也有一样的效果,更加简洁)
创建并切换到其他分支 : git checkout -b 分支名
分支合并步骤:
先切换到目标分支
合并分支:git merge 需要合并的分支
以图表形式查看分支:git log –graph(更加直观)
删除分支(强制删除,慎用) git branch -d(D)
git 配置
查看配置:git config -l
查看本地配置 git config–system —list
全局配置:git config–global –list
设置用户名与邮箱
git config –global user.name “用户名”
git config –global user.email “邮箱地址”
git相关的配置文件
Git\etc\gitconfig :git安装目录下的gitconfig —system 系统级
c:\users\个人主机名\.gitconfig 只适用于当前登录用户的配置 –global全局
git工作原理
工作目录(Working Directory)
暂存区(Stage/Index)
资源库(Repositoryi或Git Directory)
远程的git仓库(Remote Directory)
Workspace:工作区,就是你平时存放项目代码的地方
Index/Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息
Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本
Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换
git的工作流程一般是这样的:
1、在工作目录中添加、修改文件:
2、将需要进行版本管理的文件放入暂存区域:
3、将暂存区域的文件提交到git仓库。
因此,git管理的文件有三种状态:
已修改(modified)
已暂存(staged)
已提交(committed)
git项目创建及克隆
项目初始化,新建git仓库
git init
git clone ‘远程地址’
文件四种状态
版本控制就是对文件的版本控制,要对文件进行修改、提交等操作,首先要知道文件当前在什么状态,不然可能会提交了现在还不想提交的文件,或者要提交的文件没提交上
Untracked
:未跟踪此文件在文件夹中,但并没有加入到git库,不参与版本控制.通过git add状态变为staged
Unmodify
:文件已经入库,未修改即版本库中的文件快照内容与文件夹中完全一致.这种类型的文件有两种去处,如果它被修改,而变为odified.如果使用git rm移出版本库,则成为Untracked文件
Modified
:文件已修改,仅仅是修改,并没有进行其他的操作.这个文件也有两个去处,通过git add可进入暂存staged状态,使用git checkout则丢弃修改过返回到unmodify状态,这个git checkout即从库中取出文件,覆盖当前修改!
Staged
:暂存状态.执行git commit则将修改同步到库中,这时库中的文件和本地文件又变为一致,文件为Unmodify状态,执行git reset HEAD filename取消暂存,文件状态为Modified
远程仓库
github / gitee
ssh配置
ssh秘钥组成和作用
shh key的作用:实现本地仓库和github平台之间免登录的加密数据传输:
ssh key由两部分组成:
id_rsa (私钥作,#放于客户端的电脑中即可)
id_rsa.pub(私钥文件,需要配置列github平台中)
私钥加密的信息,只能通过公钥解密。公钥加密的信息,只能通过私钥解密。安全性高.
先在本机生成一个秘钥(以后也可以重新生成,重新配置)
步骤:
1,打开Git Bash
2.粘贴如下的命令
ssh-keygen-trsa-C”你注册账号的邮箱”
3.连续敲击3次回车,即可在C:1 Users\用户名文件夹.ssh目录中生成id_rsa和id_rsa.pub两个文件
4.使用记事本打开id_rsa.pub文件,复制里面的文本内容
5.粘贴配置到github->设置->ssh公钥中即可
项目推送到远程仓库
关联远程仓库
git remote add origin ‘个人仓库地址’
删除远程仓库关联
git remote remove origin
查看远程仓库关联
git remote -v
初次推送
git push -u origin ‘master’(github默认主分支为main)
推送主分支以外的其他分支(dev ,login …..)
git push -u origin ‘dev’
初次推送完成后推送可直接 git push
在远程仓库添加README.MD说明文件后,再次推送会失败,是因为当前分支文件和远程仓库文件不一致
更新本地仓库数据后即可,
代码合并:git push –rebase origin main
再次推送:
git push origin main
克隆仓库
git clone ‘个人仓库地址’(默认拉取主分支)
克隆其他分支
方式一
git clone 远程仓库地址 -b 分支名
方式二
git checkout -b dev origin/dev
-b 后的参数是在本地仓库新建和远程仓库一样的dev分支名
新建分支名后的参数是指定远程分支的来源
拉取代码
初次拉取:git pull origin(仓库名) 分支名
之后拉取就直接 git pull