Git
简介
官网地址: https://git-scm.com/
Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种 项目
占地面积小,性能极快。 它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。其性能优于Subversion、CVS、Perforce和ClearCase等版本控制工具
版本控制
- 一种记录文件内容变化,以便将来查阅特定版本修订情况的系统
- 最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本, 方便版本切换
- 集中式版本控制工具:CVS、**SVN(Subversion)**、VSS……
- 分布式版本控制工具:Git、Mercurial、Bazaar、Darcs……
代码托管中心
- 代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为远程库
- 局域网:GitLab
- 互联网:GitHub(外网)、Gitee码云(国内网站)
命令
设置用户签名
1 |
|
- 签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看
到,以此确认本次提交是谁做的,Git首次安装必须设置一下用户签名,否则无法提交代码 - 这里设置用户签名和将来登录Github(或其他代码托管中心)的账号没有任何关系
代理
添加代理
1 |
|
取消代理
1 |
|
初始化本地库
1 |
|
查看本地库状态
1 |
|
添加到暂存区
1 |
|
从暂存区移除
1 |
|
- 不会从删除工作区的文件
提交到本地库
1 |
|
查看历史记录
精简日志
1 |
|
详细日志
1 |
|
版本穿梭
1 |
|
分支
同时并行推进多个功能开发,提高开发效率
各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响,失败的分支删除重新开始即可
创建分支git branch 分支名
查看分支git branch -v
切换分支git checkout 分支名
把指定的分支合并到当前分支上git merge 分支名
冲突
合并分支时两个分支在同一个文件的同一个位置有两套完全不同的修改,Git 无法替
我们决定使用哪一个,必须人为决定新代码内容冲突产生的表现:后面状态为MERGING
解决冲突:
特殊符号:
1
<<<<<<< HEAD 当前分支的代码 ======= 合并过来的代码 >>>>>>> hot-fix
手动修改代码
添加到暂存区
执行提交
git commit -m "日志信息"
- 此时使用git commit命令时不能带文件名
团队协作
团队内协作
跨团队协作
A -> fork ->B
B -> pull -> -> merge -> A
GitHub
GitHub网址:https://github.com/
查看当前所有远程地址别名git remote -v
起别名git remote add 别名 远程地址
推送本地分支上的内容到远程仓库git push 别名 分支
将远程仓库的内容克隆到本地git clone 远程地址
- 1、拉取代码 2、初始化本地仓库 3、创建别名
将远程仓库对于分支最新内容拉下来后与当前本地分支直接合并git pull 远程库地址别名 远程分支名
SSH免密登录
- 运行命令生成.ssh秘钥目录
ssh-keygen -t rsa -b 4096 -C 邮箱名
- 查看id_rsa.pub文件并复制:
cd /var/root/.ssh
cat id_rsa.pub
Idea集成
配置Git忽略文件
xxxx.ignore(前缀名随便起,建议是git.ignore)
git.ignore文件模版:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine ceash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
.classpath
.project
.settings
target
.idea
*.iml
.DS_Store在.gitconfig文件中引用忽略配置文件:
1
2
3
4
5
6[user]
name = Layne
email = Layne@atguigu.com
[core]
excludesfile = C:/Users/asus/git.ignore
注意:这里要使用正斜线(/)
在动手改本地代码之前,一定会先检查下远程库跟本地 代码的区别!如果本地的代码版本已经落后,切记要先 pull拉取一下远程库的代码,将本地 代码更新到最新以后,然后再修改,提交,推送!