git是一种分布式版本控制系统。
版本控制可以记录文件修改历史记录,方便查阅特定版本修订情况的系统。
优点:
服务器断网的情况下也可以进行开发(因为版本控制是在本地进行的)
每个客户机保存的都是完整的项目(包含历史记录,更加安全)
工作区(写代码)->git add ->暂存区(临时存储)->git commit ->本地库(历史版本)
在工作区和暂存区提交的代码可以删除,而本地库是不能删的(删除会有记录的)
代码托管中心:
局域网
GitLab
互联网
GitHub(外网)
Gitee码云(国内的)
查看git版本命令
git --version
Git常用命令
git config --global user.name 用户名 设置用户名
git config --global user.email 邮箱 设置用户签名
git init 初始化本地库
git status 查看本地库状态
git add 文件名 添加到暂存区
git commit -m "日志信息" 文件名 提交到本地库
git reflog 查看历史记录
git reset --hard 版本号 版本穿梭
注意:Git首次安装必须设置一下用户签名,否则无法提交代码。设置的用户签名和登录Github(或其他代码托管中心)的账户没有任何关系
初始化之后git才能操作本地库
1.vim 文件名称 创建文件
2.shift+:退出编辑模式 输入wq保存并退出
ll查看当前目录的内容
一.将文件上传
1.将文件提交到暂存区
git add 文件名.类型
2将暂存区文件提交到本地库
git commit -m "版本信息" 文件名.类型
git reflog 查看版本信息
git log 查看详细日志信息
cat 文件名.类型 查看文件内容
二.文件版本回退
1.查看版本信息,复制版本号
git reflog
2.git reset --hard 版本
3.查看回退的文件cat 文件 ,发现回退成功
在.git目录底下有个head目录,有个文件可以查看在那个分支上,在refc目录-heads目录底下可以看在那个版本上;
分支
在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。
分支优点:
同时并发推进多个功能开发,提高开发效率。
各个分支在开发过程中,如果某一个分支开发失败。不会对其他分支有任何影响。失败的分支删除重新开始即可。
分支的操作:
git branch 分支 创建分支
git branch -v 查看分支
git checkout 分支名 切换分支
git merge 分支名 把指定的分支合并到当前分支上
例子:
创建分支
git branch hot-fox
修改分支
git checkout hot-fox
合并分支
git merge hot-fox
合并冲突:
合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git无法替我们决定使用哪一个。必须人为决定新代码内容。
合并把特殊符号删除
git团队协作机制:
1.团队内协作:
组长使用git初始化本地库——>push到代码托管中心——>成员clone到自己的本地库——>成员push到代码托管中心——>组长pull到自己的本地库——>然后push到代码托管中心
2.跨团队协作:
https://www.bilibili.com/video/BV1vy4y1s7k6?p=19&spm_id_from=pageDriver
远程仓库操作:
git remote -v 查看当前所有远程地址别名
git remote add 别名 远程地址 起别名
git push 别名 分支 推送本地分支上的内容到远程仓库
git clone 远程地址 将远程仓库的内容克隆到本地
git pull 远程库地址别名 远程分支点 将远程仓库对于分支最新内容拉下来后与本地仓库代码直接合并
利用git生成SS密钥:
1.先进入C:\Users\当前账户
2.ssh-keygen -t rsa -C 邮箱地址
3.敲击回车三次
配置Git忽略文件
1.为什么忽略这些文件:
因为与项目的实际功能无关,不参与服务器上部署运行,
把他们忽略到能屏蔽IDE工具之间的差异。
2.怎么忽略:
1>创建忽略规则文件xyz.ignore(前缀名随便起,建议时git.ignore)
这个文件的存放位置原则上在哪里都可以,为了方便让-/.gitconfig文件引用,建议爷放在用户家目录下(我的电脑在目录是:C。
git.ignore文件模版内容如下:
#Compiled calss file
*.class
#Log file
*.log
#BlueJ files
*.ctxt
3Mobile Tools for java (J2ME)
.mtj.tmp/
#Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see
http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
.classpath
.project
.settings
target
.idea
*.iml
2>在.gitconfig文件中引用忽略配置文件(此文件在Windows的家目录中)
[user]
name = ssssssss\ngit config --global user.name ssss
email = xssss@33.com
//把下面的语句加进去
##### [core]
excludesfile = C:/Users/1/git.ignore(这个文件地址是在我的电脑里面的,每个人目录可能不同)
idea配置:
1.在File->settings->Version Control->git->找到git.exe文件->点击test,假如显示git版本号,则代表配置成功
推送到远程代码库,如果本地库代码跟远程代码版本不一致push的操作是会被拒绝的。也就是说,也就是说,要想push成功,一定要确保本地库的版本比远程库的版本高!一个成熟的程序员在动手改本地代码之前,一定会检查下本地库跟远程库代码的区别!如果本地的代码版本已经落后,切记要pull拉取一下远程库的代码,将本地代码更新到最新以后,然后修改,提交,推送。