(实践)Git 的正确使用姿势与最佳实践 | 青训营

79 阅读6分钟

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的应用,可能需要以为真的和其他人共同开发时候才能更进一步学习了吧。