一、基本配置
1.在文件目录中,右键打开Git Bash
2.设置用户信息
git config --global user.name "xxx"
git config --global user.email "xxxx@xxx"
查看配置信息
git config --global user.name
git config --global user.email
3.为常用指令配置别名
3.1 打开用户目录,创建.bashrc文件
部分windows系统不允许用户创建点号开头的文件,可以touch ~打开gitBash,执行touch ~/.bashrc
3.2 在.bashrc文件中输入以下内容:
#用于输出git提交日志
alias git-log='git log --pretty=oneline --all --graph --abbrev-comit'
#用于输出当前目录所有文件及基本信息
alias ll='ls -al'
3.3 打开gitBash,执行source ~/.bashrc,重新加载
4.解决GitBash乱码问题
4.1 打开GitBash执行下面命令
git config --global core.quotepath false
4.2 ${git_home}/etc/bash.bashrc 文件最后加入下面两行
export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"
5.获取本地仓库
5.1 在电脑任意地方,右键新建一个文件夹作为我们本的的Git仓库。
5.2 进入这个目录,右键点击打开Git Bash窗口。
5.3 执行命令git init,执行成功后可以在文件夹中看到隐藏的.git目录。
6.基础操作指令
Git工作目录 下对于文件的修改(增加、删除、更新)会存在几个状态,这些修改的状态会随着我们执行的Git命令而发生变化。
将文件加入到git暂存区:git add 单个文件名|通配符
将所有的修改加入到暂存区:git add .
查看修改的状态:git status
将文件从暂存区提交到本地仓库:git commit -m '注释内容'
查看提交日志:git log [option]
options
--all 显示所有分支
--pretty=oneline 将提交信息显示为一行
--abbrev-commit 使得输出的commitid更简短
--graph 以图的形式显示
版本回退:git reset --hard commitID
cmmitID可以使用命令git log 或git -log来查看
查看已经删除的历史提交记录:git reflog
7.添加文件至忽略列表
新建.gitignore的文件(文件名固定),下面是配置需要忽略的文件类型
# no .a files
*.a
# but do track lib.a, even though you're ignoring .a files above
!lib.a
# only ignore the ToDo file in the current directory, not subdir/ToDo
/TODO
# ignore all files in the build/ directory
build/
# ignore doc/notes.txt, but not doc/server/arch.txt
doc/*.txt
#ignore al1 .pdf files in the doc/ directory
doc/**/*.pdf
二、分支
1.查看分支:git branch
2.新增分支: git branch 分支名
3.切换分支: git checkout 分支名
4.创建并切换分支:git checkout -b 分支名
5.合并分支:git merge 分支名称
6.删除分支,需要检查:git branch -d 分支名称
7.删除分支,不做任何检查:git branch -D 分支名称
三、解决冲突
当两个分支上对文件的修改可能会存在冲突,例如同时修改了同一个文件的同一行,这时就需要手动解决冲突,解决冲突步骤如下:
1.处理文件中冲突的地方
2.将解决完冲突的文件加入暂存区(add)
3.提交到仓库(commit)
四、开发中分支使用原则与流程
几乎所有的版本控制系统都以某种形式支持分支。使用分支意味着你可以把你的工作从开发主线上分离开来进行重大的Bug修改、开发新的功能,以免影响开发主线。
在开发中,一般有如下分支使用原则与流程:
master(生产)分支
线上分支,主分支,中小规模项目作为线上运行的应用对应的分支;
develop(开发)分支
是从master创建的分支,一般作为开发部门的主要开发分支,如果没有其他并行开发不同期上线要求,都可以在此版本进行开发,阶段开发完成后,需要是合并到master分支,准备上线。
feature/xxxx分支
从develop创建的分支,一般是同期并行开发,但不同期上线时创建的分支,分支上的研发任务完成后合并到develop分支。
hotfix/xxxx分支
从master派生的分支,一般作为线上bug修复使用,修复完成后需要合并到master、test、develop分支。
还有一些其他分支,在此不再详述,例如test分支(用于代码测试)、pre分支(预上线分支)等等。
五、Git远程仓库
1.配置SSH公钥
生成SSH公钥
ssh-keygen -t rsa
不断回车
如果公钥已经存在,则自动覆盖
Gitee设置账户公钥
获取公钥
cat ~/.ssh/id_rsa.pub
验证是否配置成功
ssh -T git@gitee.com
选择SSH,然后复制远程仓库的地址
添加远程仓库
git remote add <远端名称> <仓库路径>
远端名称,默认是origin,取决于远端服务器设置
仓库路径,从远端服务器获取此URL
例如: git remote add origin git@gitee.com:cdcqi/cqi_projects.git
查看远程仓库:git remote
将本地代码同步到远程仓库:git push [-f] [--set-upstream] [远端名称] [本地分支名] [:远端分支名]
如果远程分支名和本地分支名相同,则可以只写本地分支名
git push origin master
-f 强制覆盖
--set-upstream 推送到远端的同时并建立起和远端分支的关联关系
git push --set-upstream origin master
如果当前分支已经和远端分支关联,则可以省略分支名和远端名
git push 就能将master分支推送到已关联的远端分支
查看关联关系我们可以使用: git branch -vv 命令
从远程仓库克隆:git clone <仓库路径> [本地目录]
本地目录可以省略,会自动生成一个目录
从远程仓库中抓取和拉取,远程分支和本地分支一样,我们可以进行 merge操作,只是需要先把远端仓库里的更新都下载到本地,再进行操作。
抓取命令:git fetch [remote name] [branch name]
抓取指令就是将仓库里的更新都抓取到本地,不会进行合并
如果不指定远端名称和分支名,则抓取所有分支
拉取命令:git pull [remote name] [branch name]
拉取指令就是将远端仓库的修改拉到本地并自动进行合并,等同于fetch+merge
如果不指定远端名称和分支名称,则抓取所有并更新当前分支
2.Git工作流程图,如下:
命令如下:
1.clone(克隆):从远程仓库中克隆代码到本地仓库
2.checkout(检出):从本地仓库中检出一个仓库分支然后进行修订
3.add(添加):在提交前先将代码提交到暂存区
4.commit(提交):提交到本地仓库。本地仓库中保存修改的各个历史版本
5.fetch(抓取):从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少。
6.pull(拉取):从远程库拉到本地库,自动进行合并(merge),然后放到到工作区,相当于fetch+merge
7.push(推送):修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库
8.解决合并冲突
在一段时间,A、B用户修改了同一个文件,且修改了同一行位置的代码,此时会发生合并冲突。
A用户在本地修改代码后优先推送到远程仓库,此时B用户在本地修订代码,提交到本地仓库后,也需要推送到远程仓库,此时B用户晚于A用户,故需要先拉取远程仓库的提交,经过合并后才能推送到远程分支。
在B用户拉取代码时,因为A、B用户同一时间修改了同一个文件的相同位置代码,故会发生合并冲突。
远程分支也是分支,所以合并时冲突的解决方式也和解决本地分支冲突相同。