Git使用规范
一. Windows上安装Git
访问官网https://git-scm.com/download/win下载对应版本的安装包。
安装完成后,从开始菜单--->Git--->Git Bash,打开命令行工具。
为了确认是否安装成功,我们执行version命令,如果正常显示Git的版本号就表示Git已经成功安装了。
git --version
输出:git version 2.9.0.windows.1
二. Git 全局设置
1.初始配置
在使用Git之前,我们对Git做一个初始配置,我们需要设置用户名和电子邮箱。以便之后我们提交了代码后,Git能跟踪和标记是谁做了修改。
在命令行工具中,依次执行如下命令进行设置:
git config --global user.name "<使用者名字>"
git config --global user.email "<电子邮箱>"
注意:替换掉命令中的<使用者名字>和<电子邮箱>,注意保留命令中的双引号。强烈推荐您使用与远程代码库中相同的用户名和电子邮箱
配置完成后,我们也可以执行以下命令进行查看:
git config --global user.name
git config --global user.email
2.Windows控制台无法显示中文
Windows上的控制台遇到中文名称的时候会显示为类似"\346\226\260\350\246..."这样的字符,执行以下命令让它显示出正确的中文:
git config --global core.quotepath off
3.Windows上拉取的文件编程修改状态
问题:
在Windows系统上,可能会遇到,从git上拉取服务端代码后,发现新拉取的文件都编程修改状态。这是git自动转换换行符导致的问题。
原因:
不同操作系统使用的换行符是不一样的。Unix/Linux使用的是LF,Mac后期也采用了LF,但Windows一直使用CRLF【回车(CR, ASCII 13, \r) 换行(LF, ASCII 10, \n)】作为换行符。而git入库的代码采用的是LF格式,它考虑到了跨平台协作的场景,提供了“换行符自动转换”的功能:如果在Windows下安装git,在拉取文件时,会自动将LF换行符替换为CRLF;在提交时,又会将CRLF转回LF。但是这个转换是有问题的:有时提交时,CRLF转回LF可能会不工作,尤其是文件中出现中文字符后有换行符时。
解决方法:
需要禁用git的自动换行功能:
git config --global core.autocrlf false
git config --global core.filemode false
git config --global core.safecrlf true
三. 配置 SSH 公钥
推荐使用 SSH 协议来访问 Git 仓库。
1. 生成公钥
打开命令行终端输入
ssh-keygen -t rsa -b 4096 -C <your_email@example.com>
输出如下信息,并提示,连续点击 Enter 键即可。
# Creates a new ssh key, using the provided email as a label
# Generating public/private rsa key pair.
Enter file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter] // 推荐使用默认地址
Enter passphrase (empty for no passphrase): //此处点击 Enter 键即可,也可以填写密码,填写密码后每次使用 SSH 方式推送代码时都会要求输入密码,由于这个 Key 也不是用于军事目的,所以也无需设置密码。
成功之后显示如下信息:
Your identification has been saved in /Users/you/.ssh/id_rsa.
# Your public key has been saved in /Users/you/.ssh/id_rsa.pub.
# The key fingerprint is:
# 01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db your_email@example.com
公钥文件id_rsa.pub创建成功后,默认是存储在用户目录.ssh中
Window系统用户目录:C:\Users\Administrator\.ssh\id_rsa.pub
四. 分支管理
代码库中存在两个固定分支:
master 主分支,只用于发布系统的正式版本;
develop (默认)开发分支,日常的开发工作都只能在该分支上进行。
这两个分支都属于保护分支,禁止直接推送代码。
1. 克隆代码到本地
通过命令克隆代码到本地目录
git clone git@git.coding.net:xxx
2. 拉取最新代码
克隆下来的代码,默认为develop分支,首先保证该分支下的代码是最新的。
使用如下命令从远程库中拉取最新代码到本地:
git pull
// 获取远端分支
git pull origin <branch>
// 从远端拉去本地没有的分支并新建本地分支
git checkout -b newbranch origin/newbranch
2. 创建功能分支
由于不能直接在develop分支上修改代码,
需要从develop分支上创建一个功能分支,命名为feature-xxx
git checkout -b feature-xxx develop
现在可以在 feature-xxx 功能分支上进行开发。
3. 将修改的文件添加到缓存区
当我们新增或编辑了代码,我们需要将文件添加到缓存区。
在命令行中执行以下命令:
git add .
最后的“.”符号的意思是仓库下的“所有文件、文件夹和子文件夹”。
假如我们只想要把特定文件添加到源代码控制中去,我们可以显示的指定它们,使用命令git add <filename>:
git add my_file, my_other_file
4. 提交文件改动
使用如下命令,将改动提交到本地HEAD区,此时还并没有同步到远程代码库:
git commit -m "代码提交信息"
输入提交信息时,如果需要输入中文,则使用-m参数
注意:提交我们的文件时,总是附带着有意义的注释,描述了它们现在的状态。
现在我们随时都可以回滚到这个提交状态。如果你有需要检查你现在的已加载(staged)和未加载(unstaged)文件的状态、提交等,你可以询问git的状态:
git status
5. 推送到远程代码库
执行如下命令以将这些改动提交到远端仓库:
git push origin feature-xxx
推送完成后在远程库中创建对应的合并请求,管理员会将新提交的代码合并到develop分支中。
6. 删除本地的feature分支
首先得切换回develop分支下:
git checkout master
查看当前存在哪几个分支
git branch
强制删除分支
git branch -D feature-xxx
五. 合并分支
如果要将其他分支的修改合并到 master 分支。
先切换到 master 分支下
git checkout master
拉取 master 最新代码
git pull
进行合并 注意这里使用--squash参数,用来把一些不必要commit进行压缩
git merge --squash feature-xxx
提交合并后的代码
git commit -m "修改xxx"
最后推送到远程代码库
git push
Git 暂存代码
git stash
取出暂存
git stash pop
其它
1.添加tag 标签
git tag <name> // 打标签
加上-a参数来创建一个带备注的tag,备注信息由-m指定。如果你未传入-m则创建过程系统会自动为你打开编辑器让你填写备注信息
git tag -a tagName -m "my tag"
2.列出已有的tag
git tag
3.给指定的某个commit号加tag
git tag -a v1.2 9fceb02 -m "my tag"
4.将tag同步到远程服务器
git push origin v1.0
5.推送所有:
git push origin --tags
忽略已控制的文件
git rm --cached application/database.php