Git
简介
Git是分布式控制系统,用来处理项目。
版本控制
版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。它最重要的是可以记录文件修改历史纪录,从而让用户能够查看历史版本,方便版本切换。
版本控制工具
集中式版本控制工具
集中化的版本控制系统诸如CVS、SVN等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。
分布式控制系统
客户端提取的不是最新版本的文件快照,二是把代码仓库完整的镜像下来,这样任何一处协同工作用的文件发生故障,事后都可以用其他客户端的本地仓库进行恢复。因为客户端的每一次文件提取操作,实际上都是对整个文件仓库的完整备份。
工作机制
代码托管中心
代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为远程库。
常用命令
说明
签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。Git首次安装必须设置一次用户签名,否则无法提交代码。这里设置用户签名和将来登录Github的账号没有任何关系。
分支
什么是分支
在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。
分支操作
合并冲突
合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。git无法替我们决定使用哪一个,必须认为决定新代码的内容。
解决
合并错误出现后,vim打开要合并的文件,将自己不想要保存的代码删掉,保存退出。然后,保存至暂存区,最后提交,提交的时候就不要带文件名了。
远程仓库
SSH免密登录
Idea集成
忽略文件
git.ignore
# 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 crash logs, see
http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
.classpath
.project
.settings
target
.idea
*.iml