Git是一个开源分布式版本控制系统软件 最先进最流行的版本控制系统.
Git记录完整的文件快照
断网也可以在本地保存(但是等连网才能上传到中心服务器同步给他人)
==不要安装中文和特殊路径下, 不要挪动git软件的目录==
下载地址: Git
默认全都下一步即可完成安装
打开cmd终端, 输入命令
git --version
(注意中间空格是必须的)
如果出现版本号, 就代表git软件成功安装到了你的电脑中
git add .
之后,文件由工作区,添加到了暂存区。 暂存区保存了下次将提交的文件列表信息。git commit -m '提交说明'
(单引号必须),暂存区 -> Git本地仓库。Git软件在工作的时候,需要知道你是谁?所以需要设置一个用户名和邮箱。
这个用户名和邮箱,最好使用你的码云账号,当然随便填也可以。(让别人能联系到你)
具体做法:
任何文件夹,空白处,右键 --> Git Bash Here
依次执行下面两行代码 --global 会将配置项保存到用户配置 (以后这台计算机, 无论哪个git项目文件夹都使用这个名字和邮箱
执行命令 - 设置你的名字
git config --global user.name "名字"
执行命令 - 设置你的联系邮箱
git config --global user.email "邮箱"
C:\Users\用户名\.gitconfig中
初始化本地git环境, 让git来监测本地文件, 搭建三大区域
创建一个项目文件夹,打开项目文件夹
注意:一定要在项目文件夹
,右键-->Git Bash Here。
执行命令 - 初始化.git文件夹
git init
命令之后,会在项目文件夹中生成一个隐藏的 .git
文件夹git init
写代码测试
在项目文件夹, 右击, Git Bash Here
执行命令 (.代表项目文件夹 - 工作区一切 保存到 暂存区)
git add .
再执行命令 (代表把 暂存区的一切 保存到 git本地仓库)
git commit -m '提交说明'
执行完,这两个命令,表示使用Git把当前代码及文件的改动记录起来了 - 有了一次==快照==
重复1-2这2步, 这个过程4次,多使用Git记录几次
查看提交日志
git log - 打印详细信息
执行命令: (查看提交的日志 - 在一行简略显示)
git log --oneline
git checkout 版本号
执行命令 (可以切换回到"现在") - master代表最近的一次提交
git checkout master
穿梭到历史版本之后,通过 git log
查看不到未来的版本号
需要加 --reflog
选项,才能查看所有的版本号
git reflog --oneline
再次修改/新增代码后 - 过多的话, 如何查看本地有什么文件变更呢?
git status
已暂存 - 执行git add . 以后的再查看git status
已提交 - 执行git commit -m '提交信息说明' 以后再运行git status
如果看到有红色字体或绿色字体的文件,说明还有文件没有提交到本地仓库形成快照 (git不负责报错哦)
使用Git管理项目的时候,会有很多次提交。把每一次提交连接起来,向一条线一样。这就叫做分支。
初始化之后,默认是在master分支上进行操作的,master分支也叫做主分支。
相关命令:
执行命令 - 查看所有本地分支
git branch
执行命令 - 创建新分支 (dev叫分支名, 随便起)
git branch dev
执行命令 - 切换分支 (现在本地代码都在dev这个分支下) - 如果想回到master就把dev写成master
git checkout dev
测试:
==切换分支之前,必须把当前分支的代码全部提交到仓库==
如果需要把dev分支的代码合并到master分支
切换到master
执行命令 - 当前在master分支上, 把dev上修改的代码合并过来
git merge dev
打印git log --oneline 查看master分支和dev分支
1.快进模式 (Fast-forward)
dev分支,它包含master分支的所有提交记录
合并的时候,只需要让maser分支的代码和dev分支的代码一样即可
执行命令 - 删除无用的分支(不会影响master里的代码 -d代表删除意思)
git branch -d dev
2.合并模式
新建newdev分支
git branch newdev
切换到newdev分支上
git checkout newdev
然后删除一点原来的js代码, 再它上面修改新的代码(保证和原来master状态下, 不一样就行)
再切换到master分支
git checkout master
==master分支的同样地方也进行了修改, 然后 自己提交一份 (非常重要, 不这样操作就不会显示冲突了)==
在master分支下, 把newdev分支的内容合并上来
git merge newdev
报冲突如下:
这种模式的合并,有可能会有冲突出现上述画面,需要执行下面的操作:
回到vscode查看代码冲突的地方, 解决: 找到对方是谁, 删除谁的, 还是都保留下来
在合并代码的时候,有可能会有冲突,遇到冲突,解决冲突,然后提交即可。
执行 git merge 分支名
的时候,如果出现如下画面,表示有冲突:
git add .
和 git commit -m '提交说'
从而完成这个合并。码云和github都提供仓库的托管服务。
区别是码云是国内的服务器,打开速度较快;github是国外的服务器,打开速度不能保证。
码云:Gitee - 基于 Git 的代码托管和研发协作平台 - 使用这个
github:GitHub: Where the world builds software · GitHub
能登录成功就代表注册成功了, 要牢记账号/登录的方式
秘钥就是一个钥匙, 开门的作用 (免登陆)
我们向码云或github网站推送代码的时候,最好使用SSH的方案,这个方案需要提前配置好秘钥。下面是具体的配置方法。
任何文件夹位置,空白处右键,选择右键菜单中的 “Git Bash Here
”,执行下面的命令,可以生成SSH秘钥(包含一个公钥一个私钥)
执行命令 (生成秘钥文件)
ssh-keygen -t rsa -C "邮箱"
注意,回车执行命令,然后继续回车,回车....直至生成完毕~
最后生成的秘钥在:
Windows: C:\Users\用户名\.ssh mac: 你的用户名那个文件夹中。 按shift+Commend+. 可以显示隐藏文件,然后就可以看到 .ssh文件夹了
找到 .ssh/id_rsa.pub
,用vscode打开,复制里面全部的内容,配置到远程仓库
(重要) 相当于和远程仓库建立非账号密码方式的登录链接
在网站上创建一个项目, 申请一块磁盘空间 (如果自己有服务器, 在服务器上搭建一个git服务端的服务也一样)
==自己公司项目可不要公开啊,可能被敌对机构窃取==
本地已有仓库
git remote add origin 远程仓库地址
如果报错: 假如提示origin名字这个本地仓库已经用过了, 可以先移除 git remote remove origin 再执行这句命令
git push -u origin master
只能把本地仓库的代码推送到远程仓库;不能把工作区的、暂存区的代码推到远程。
SSH警告
如果首次使用SSH,会出现一个SSH警告,提示如下
Are you sure you want to continue connecting (yes/no/[fi....])
”
一个远程仓库只能放一个本地仓库的代码
是SSH不是https
项目经理或组长处得到所需的 git的地址和秘钥
实际开发中,有些时候,我们需要把一个远程仓库克隆到本地
克隆命令 - 再想要把远程仓库里代码下载的文件夹执行这个命令哦
git clone 远程仓库地址/ssh地址
克隆,相当于下载
如果克隆的是自己的仓库,那么克隆之后,可以对代码进行修改,修改之后,直接 add
、 commit
、pull
、 push
即可。
注意:克隆之后,路径并不是仓库的路径。需要把黑窗口关闭,进入项目文件夹,重新打开黑窗口
git branch -a (-a代表远程分支也一起查看)
实现原理:
实现步骤:
git help config - 自动弹出英文文档
中文文档: Git 参考手册
.gitignore 这是一个忽略文件
有时候项目中有些文件, 无需让git管理, 我们可以配置在忽略文件中(比如开发依赖包...)
使用规则:
#开头 是注释
/结尾的 是目录
/开头 防止递归文件夹
!开头 表示取反
还可以使用正则表达式来 匹配文件
# 忽略 index.css文件 (无论哪里的) index.css # 忽略所有的 .a 结尾的文件 *.a # 只忽略当前.gitignore文件同级目录下的TODO文件夹, 不忽略abc/TODO /TODO # 忽略任何目录下名为build的文件夹 build/ # 忽略 doc/a.txt doc/cbd.txt 但不忽略doc/ab/a.txt doc/*.txt # 忽略 doc/ 目录以及所有子目录下的 .pdf文件 doc/**/*.pdf
版本管理软件分类