Git
- Git 的正确使用姿势与最佳实践:团队协作和版本控制的最佳实践;
版本控制
按照我自己的理解,版本控制就是记录对文件进行的操作,包括新增修改删除,这样可以便于在未来的工作中能够快速找到对工作进行的修改,这种系统就是版本控制系统.
最常用的版本控制系统就是git,也是我现在经常在使用的一个系统。
好处:
1.记录开发的历史记录,免去不断备份的复杂步骤。
2.在团队多人合作开发时,可以每个人独立开发一部分,最后进行合并,对于该修改的部分也会记录下对应的开发人员,减少冲突。
分类
git不同于本地版本控制系统(无法协同工作),集中式版本控制系统(svn,cvs,需要有一个中央服务器来进行统一管理),属于分布式版本控制系统。
特点:
- 需要一台服务器作为代码仓库。
- 每个用户的电脑都是一台代码服务器仓库,并且和总代码仓库是镜像的,但是用户对代码进行修改时是提交到自己的电脑服务器中。
- 网络不是必要条件,但是只有通过网络连接到总服务器才可以将代码在两个服务器同步。
git操作方式
git gui 图形界面操作
git bash 命令行操作
两种操作视实际开发情况进行使用。
命令行
- 在任意文件夹可以右键点击git bash here打开命令行窗口,当前路径
- 可以通过在窗口右键,options->text->select调整字体的大小。
一些Linux公共操作:
# cd 改变目录 (change directory)
cd images #进入images文件夹
cd .. #进入上一层目录
cd ~ #进入用户根目录
#tab可以自动补全,双击tab展示符合规则的内容
# ls 展示当前目录列表(list)
ls # 展示当前目录
ls -a # 展示全部内容,包括隐藏文件
ls -l # 以列表的形式展示内容
# clear reset清屏
clear # 清除屏幕内容,滚动条,保留了历史
reset # 重置,历史记录没了。
# mkdir 创建一个文件夹 (make directory)
mkdir test test0 # 创建了文件夹
# touch 创建文件
touch app.java #创建了一个文件
touch Controller/app.java # 在对应目录下创建对应文件
# rm 删除一个文件获取文件夹
rm file # 删除文件
rm -r xxx #递归删除
# mv 移动文件(move)
mv file js # 将文件移动到文件夹中
mv index1.html index2.html # 文件重命名
# cp 复制文件(cp)
cp index.html index2.html # 复制文件并命名
cp -r css css02 # 文件夹,需要-r参数。
# cat 查看文件全部内容
cat xxx
# q退出
git命令操作:
# 初始化git仓库,会在当前目录生成一个隐藏文件夹 .git
git init
# 查看git的状态
git status
# 让git管理这个新建的文件(相当于JAVA里新建文件后提示的add)
git add file
# 提交到本地仓库 -m 指message
git commit -m '第一次提交'
# 查看提交日志
git log
# 第一次使用配置邮箱和用户名
# git config user.name 你的目标用户名
# git config user.email 你的目标邮箱名
# 这种配置方式只有在当前仓库生效
git config user.name XXX
git config user.email XXXX@XXX.xx
# 使用--global参数,配置全局的用户名和邮箱,这样别的git仓库就不需要重新配置
git config --global user.name XXX
git config --global user.email XXX@XX.xx
# 查看配置信息
git config --list
git流程
工作区(新建的文件及文件夹)->add命令交给git管理->暂存区->git commit提交到本地仓库区->通过push同步到远程仓库
.git管理区域为暂存区和仓库区
# 使暂存区的内容恢复到工作区
git checkout file
# 版本回退,回退到指定版本 :~1上一次提交 ~2上上次提交 ~0当前提交
git reset --hard 版本号
git忽视文件
对于仓库中不想交给git管理的文件,比如配置密码,代码思路,可以通过命令忽视对应文件:
- 在仓库中创建
.gitignore文件,将想进行处理的文件的名字写入文件里
# 忽视.gitignore文件
.gitignore
# 忽视LA下的所有文件
LA/*.*
git分支
对个人开发来说,可以再自己的分支上工作,提交到自己的分支上,功能开发结束合并到主分支。
多任务并行开发是非常适合分支的应用场景。
git优越的地方是分支操作远远快于svn,cvs等工具
相关命令:
# 创建分支,与当前分支完全相同,git在第一次commit时候会创建当前为master主分支
git branch name
# 查看所有分支,有*为当前分支
git branch
# 切换分支,切换不会自动保存当前分支内容,记得提交
git checkout name
# 创建分支并切换
git checkout -b name
# 删除分支,不能在当前分支,删除其他分支,master分支可以删除
git branch -d name
# 合并分支
git merge name
对于同一个文件,如果merge合并出现冲突,只能手动进行处理。
远程仓库github
相当于一个统一的中央代码服务器,远程存储不同主机提交的不同版本的代码,实现共享与协同开发。
相关命令:
# 本地代码提交到远程仓库,第一次使用要登录github
git push 仓库地址 master(分支名字)
# 将远程仓库master代码拉取到本地,通常在push前要pull一次
git pull 代码地址
# 克隆远程仓库代码到本地
git clone 仓库地址 自定义本地仓库名
# 给仓库地址设置别名,方便
git remote add 别名 仓库地址
git与github没有直接关系。
git是版本控制的工具系统
github是代码托管的平台,远程仓库。--只支持git作为唯一的版本库格式
世界上有很多代码仓库,不同公司有不同的代码仓库。
SSH免密码登录配置
- 1 创建SSH Key:
ssh-keygen -t rsa - 2 在文件路径
C:\用户\当前用户名找到.ssh文件夹 - 3 文件夹中有两个文件:
- 私钥:
id_rsa - 公钥:
id_rsa.pub - 4 在
github -> settings -> SSH and GPG keys页面中,新创建SSH key - 5 粘贴 公钥
id_rsa.pub内容到对应文本框中 - 5 在github中新建仓库或者使用现在仓库,拿到
git@github.com:用户名/仓库名.git - 6 此后,再次SSH方式与github“通信”,不用输入密码确认身份了
IDEA集成git使用
- 前提肯定是安装了git
- 在VCS栏中可以进行一系列git的操作
- IDEA设置git忽略文件需要按照.ignore插件,其他操作和上面相同
克隆远程仓库到本地,可以通过File->New->Project from Version Control->git来进行克隆的选择配置
其他知识:
# 生成一个可供发布的压缩包
$ git archive
总结:
Git是一个优秀的版本控制工具,对于未来工作中的团队协作开发极大地提升了效率,并且对于开源这一方面,git与github的配合提供了广阔的学习场景。
更多关于git的应用,可能需要以为真的和其他人共同开发时候才能更进一步学习了吧。