6 Git版本控制
6.1 简介:Git(分布式版本控制系统)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。
github
6.2 下载:可以从Git官网直接下载安装程序,然后按默认选项安装即可
直达地址:https://git-scm.com/download/win
6.3 基本配置
a配置用户名:git config --global user.name 'yourname'
b配置邮箱:git config --global user.email 'email@example.com'
c生成公钥ssh key:这个是必须的,用于标识你的机器身份,无论使用github,oschina等代码管理平台(需要去平台注册账号),都需要在相应的个人中心添加ssh key
c1:ssh-keygen -t rsa -C "email@example.com"
c2:然后一路回车,不需要输入任何密码之类,生成ssh key pair
c3:ssh-add ~/.ssh/id_rsa
c4:执行上述步骤后查看生成的sshkey
cat -/.ssh/id_rsa.pub
查看生产的秘钥 cat ~/.ssh (里面也有地址,可以进入文件夹内查看),我们要用的就是公钥,然后把里面的值都复制来,然后填充到git仓库中。
c5:手动复制生成的公钥,本教程使用oachina的gitlab为例,github添加公钥的做法类似。用刚刚命令添加的用户邮箱注册oschaina的gitlab账号(https://gitlab.com/),然后登陆gitlab,点击右上角的个人资料,进入个人ssh公钥配置,把刚刚复制的公钥添加进去,确认提交。
Tips:
1.因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。你也许会担心,如果有人故意冒充别人怎么办?这个不必担心,首先我们相信大家都是善良无知的群众,其次,真的有冒充的也是有办法可查的。
2.git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
6.4 其他基本配置
a避免中文乱码:git config --global gui.encoding utf-8
b避免git status显示中文文件名乱码:git config --global core.quotepath off
c让git不要管Windows/Unix换行符转换的事:git config --global core.ignorecase false
dWindows还需要配置:git config --global core.autocrlf false
6.5基本使用示例-远程建立仓库,本地拉取和上传文件到远程仓库(这个需要gitlab或github创建远程仓库)
1.线上建立项目(换github演示一下,gitlab也类似)
如:
2.本地通过Clone with SSH拉取到电脑(SSH方式在配置好之后,不需要验证账号和密码,而另一种https方式每次操作需要验证账号和密码)
拉取项目 git clone ssh-git地址(git@github.com:smaluv/mymall-fe.git)
3.但是第一拉取的时候,如果你没有执行6.2的C3生成配置密钥的步骤,会报没有权限的错误,即本地和远程没有建立验证,所以会有一个公钥建立的操作,这个ssh key建立好之后就可以愉快的玩耍了。详细可以查看6.2的C3生成配置密钥的步骤。
3.1 配置秘钥:使用命令 ssh-keygen -t rsa -C "smaluv@qq.com"
查看生产的秘钥 cat ~/.ssh (里面也有地址,可以进入文件夹内查看),我们要用的就是公钥,然后把里面的值都复制来,然后填充到git仓库中。
3.2 将公钥文件值填充到git线上仓库中:最后的allow记得勾选,因为我们要写入文件,不勾选,意味着只能读取文件。
Tips:配置密钥也可参考(详细可参照https://blog.csdn.net/u013778905/article/details/83501204 或者 https://www.imooc.com/article/72092?block_id=tuijian_wz)
3.3 添加成功后,重新git clone 拉取一下,就可以看到成功啦。(Tips 此时拉取的项目存放位置可以指定,像我就拉取到shop_onlineclass目录下,方法就是先cd 到要存放的路径下,然后在拉取项目)
Git同步
项目同步的方式其实有两种,第一种就是上面说的直接拉取线上的项目到本地来.第二种就是本地新建项目后,在push到线上去,如下:
4.本地仓库管理线上git仓库
进入到项目存放文件的目录中(进入项目的根目录)
4.1 初始化项目 git init
执行完成之后,文件中会多出一个.git文件,这意味着该文件是一个git可识别的文件,即给git作了标识;
4.2 将本地文件和远程git管理通过ssh地址
git remote add origin git@git.......git ssh地址
4.3 在将远程的代码拉下本地作比较
git pull origin master (其中origin代表是远程服务器 master代表是分支)
4.4 拉取远程代码后,需要本地git去对比下远程和本地代码的区别,判断当前本地代码文件的状态
git status
可以看到,本地git对比状态检查到了一个新增的test.html文件(远程git中没有,需要我们提交)
4.5 提交文件(add .提交所有文件, add +指定文件名,应该可以提交指定的文件吧-待测试)
git add .
4.6 正式提交缓存
git commit -am '本次提交的一些说明' -am意思提交全部并加上注释
4.7 正式提交缓存到线上
git push --set-upstream origin master
4.8 提交完成之后,我们再去线上git看下记录,就可以看看我们提交的代码记录了。
5.一些额外的配置,如git_ignore,用来告诉git一些文件不需要同步(如一些sublime一些的自动生成的缓存文件,nodejs的一些包)
(不一定需要跟这个一样使用命令生成和编辑,这里只是为了让自己熟悉命令操作语句)
5.1 在git项目根目录下生成.gitignore文件
vim .gitignore
5.2 在.gitnore文件新增ignore的一些规则,被匹配到的文件就不会被git追踪并上传
如
.DS_Store ---sublime生成一些缓存,不需要追踪
/node_modules/ ---nodejs的npm生成的一些包,内存挺大的有几百兆,没必要上传,需要的时候线上生成下就好了
/dist/ ---打包之后的文件,也是没必要同步追踪的
5.3 分支管理
一般开发时,我们不在master分支上开发,master只作为可读分支,要开发时却换到版本分支上,如下:
git checkout -b mymall-1.0
其中checkout表示切换分支,-b 是表示当前分支没有建立,立马建立一个分支 mymall_1.0 新建的分支 ------新建一个分支mymall_1.0并切换
查看项目的分支 git branch,其中带*号表示当前所处的分支;
切换checkout分支后表示我们所有的项目文件都在改分支下操作,即不在master分支下操作。
6.终极提交,项目在提交代码时,一定要先回到项目根目录,然后执行git操作;
其中,当存在空文件夹时,git是不会识别这些空文件夹的,只有等到空文件夹中有文件时,才会同步检测到;(git只追踪文件和文件的父目录)
7总结 项目常用的命令(步骤)
7.1 先切换到分支
7.2 拉取线上最新代码和本地修改的情况比对
git merge origin master //多人开发提交前一定要先合并分支
git pull origin master 跟新本地同远程的文件库,防止代码混乱,提交失败
7.3 比对
git status
7.4 提交添加
git add .
7.5 提交信息备注
git commit -m "想要加的信息"
7.6 正式提交 git push
在第一次提交(或第一次提交给分支时,用git push --set-upstream origin master(or分支branch)
)
git push -u orgin master/分支 提交文件(git push 即可)
还有一般一些重大版本提交会打tag(git push提交完之后)
git tag tag-dev-initial(tag名称)
git push origin tag-dev-initial
一些基本的命令语句:
命令终端清除历史命令:cls; --清屏
ls 查看当前文件夹中的文件
cd ../回到上一层
cd 进入到某一个目录中
rm -rf + mymall-fe 删除文件夹 rm移除 -rf 移除文件 mymall-fe文件夹名
rm filename 删除指定的单个文件--rm test.html
mkdir + filename 新建文件夹 make dir 文件夹+filename
vim fileanme.txt 创建文件
vim test.html可以生成一个文件并编辑该文件 按i是文件插入操作,输入完成后按esc推出插入模式,并按' :wq '保存退出;
ls -al 显示全部的文件,这样不会忽视一些隐藏文件
ls 显示文件,但是一些隐藏文件不出出现,因为linux下这文件不会被发现
cat filename 通过cat可以查看文件的内容
在Windows下使用git时出现 warning: LF will be replaced by CRLF in xxx.
由于Linux中的换行符是LF,而Windows中的换行符是CRLF,如果想用Windows下的git管理来自Linux的文本文件,git会默认将LF转换成CRLF,并发出烦人的warning。解决办法如下:
进入目标仓库的最上层目录执行:
git config core.autocrlf false
部分博文中提到先将.git文件删掉(rm -rf .git)将.git文件夹删掉然后再用git config –global core.autocrlf false对本地的所有git仓库都执行禁止自动转换的命令,然后重建该仓库,这样未免牵扯太大,而且直接删掉.git会丢失以前的commits。惊醒新人;
tips:该wraning问题不大,不修改问题也不大。
conmit的时候出现Run git config --global user.email "you@example.com" git config --global user.name "Your Name" to set your account's default identity. Omit --global to set the identity only in this repository.
这个配置问题,说明之前的.config文件配置用户名和邮箱错误,只需要在当前下重新配置一下就好
git config --global user.email "smaluv@qq.com"
git config --global user.name "smaluv"
然后重新执行git commit -am '第一次修改'
常用的几个命令:
git clone ***********
git add . 提交文件添加
git commit -m "想要加的信息"
git pull origin master 跟新本地同远程的文件库,防止代码混乱,提交失败
git push -u orgin master 提交文件
提交出现另外如打标签的窗口
两次 commit 需要合并(merge),可以将这个看作是给这个merge 打标注(vim编辑)
输入 i 进行编辑模式
按esc 退出编辑模式
输入 :wp 进行保存并退出 --->: 是指令的开始符,w是保存,q是退出
不想打任何备注可以直接在进入这个界面的时候直接 :q 就可以退出
--------------------------------------