文章目录
- [零、 常用命令](#零、 常用命令)
- [一、 版本控制](#一、 版本控制)
- [二、 Git介绍](#二、 Git介绍)
-
- 2.1.安装Git
- 2.2.Git配置
- [2.3 Git四个区域](#2.3 Git四个区域)
- 2.4.工作流程
- 2.5.Git项目搭建
- 2.6.Git文件操作
- 三、Gerrit使用
-
- [3.1 第一次使用时配置](#3.1 第一次使用时配置)
零、 常用命令
python
"""更新"""
git fetch -p # 拉最新代码到本地
git rebase # 合并
# 前两个可以合并为 git pull --rebase
git fetch <remote>: # 将远程->本地。包括远端的所有分支。不会自动与本地合并。
git fetch origin feature/xyy_R5.18.10.073-2 # 只更新远端一个分支的代码
git rebase <origin/master> # 与本地合入
"""第一次提交 或 前几次提交已合入"""
git add 文件名 # 保存到暂存区,文件是已暂存状态(staged)
git add . # 所有文件保存在暂存区
git commit -m "消息内容" # 提交暂存区中的内容到本地仓库,文件是已提交转台(committed)
git review 分支名 # 默认master,提交到远端仓库
"""第二+次提交,第一次未合入"""
git add 文件名
git commit --amend # 合并之前的提交
git review 分支名
git stash # 放入垃圾桶
git stash pop # 从垃圾桶拿出
"""已提交到远程git仓库,被abandon后,本地需要回退"""
git reset
git reset --soft HEAD^
"""分支"""
# 分支合入master:
git checkout master
git merge 分支名
git push origin master或git push
#提交两个分支:
cherry pick change to another branch
新建: git branch 新分支名 # 例:git branch testbranch
查询: git branch
切换: git checkout 分支名 # 例:git checkout master
git branch -r #查看远程所有分支
git branch -a #查看本地和远程所有分支
git branch -b <name> #新建分支
git branch -d <name> #删除本地分支
git branch <name> #创建name分支
git rebase master
git add .
git commit -s -m "代码修改描述"
一、 版本控制
版本控制 (Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。
简单说就是用于管理多人协同开发项目的技术。
作用:
- 实现跨区域多人协同开发
- 追踪和记载一个或者多个文件的历史记录
- 组织和保护你的源代码和文档
- 统计工作量
- 并行开发、提高开发效率
- 跟踪记录整个软件的开发过程
- 减轻开发人员的负担,节省时间,同时降低人为错误
常见的版本控制工具 :
Git
SVN(Subversion)
CVS(Concurrent Versions System)
VSS(Micorosoft Visual SourceSafe)
TFS(Team Foundation Server)
Visual Studio Online
版本控制分类:
- 本地版本控制
- 集中版本控制:SVN、CVS、VSS 所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改
- 分布式版本控制:Git 所有版本信息仓库全部同步到本地的每个用户,但这增加了本地存储空间的占用。
二、 Git介绍
Git是免费的、开源的,最初Git是为辅助Linux内核开发的,来替代BitKeeper!
2.1.安装Git
卸载:反安装+清理环境变量
打开[git官网]https://git-scm.com/ ,下载git对应操作系统的版本
官网下载太慢,我们可以使用淘宝镜像下载http://npm.taobao.org/mirrors/git-for-windows/
安装:无脑下一步
启动Git:开始菜单、或任意文件夹下右键
Git Bash:Unix与Linux风格的命令行,使用最多,推荐最多
Git CMD:Windows风格的命令行
Git GUI:图形界面的Git,不建议初学者使用,尽量先熟悉常用命令
2.2.Git配置
python
git config -l # 查看所有配置文件,其实都保存在本地
git config --system --list # 只查看系统配置
git config --global --list # 查看当前用户(global)配置,即本地配置
配置文件所在电脑位置:
python
Git\etc\gitconfig :Git 安装目录下的 gitconfig --system 系统级
C:\Users\Administrator\.gitconfig 只适用于当前登录用户的配置 --global 全局
2.3 Git四个区域
- 工作目录(Working Directory) 工作区Workspace 平时存代码
- 暂存区(Stage/Index) 临时存改动,本质是文件
- 资源库(Repository或Git Directory) 本地仓库 安全存放数据的位置,有所有版本。HEAD指向最新放入仓库的版本
- 远程的git仓库(Remote Directory) 远程仓库 托管代码的服务器
2.4.工作流程
1、在工作目录中添加、修改文件; 如 UserMap.xml
2、将需要进行版本管理的文件放入暂存区域; git add . 点表示暂存所有文件
3、将暂存区域的文件提交到git仓库。 git commit
因此,git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)
2.5.Git项目搭建
搭建仓库的2种方式:
python
本地仓库搭建: git init 会生成一个.git隐藏文件
克隆远程仓库: git clone [url]
2.6.Git文件操作
文件的四种状态
-
Untracked : 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过
git add
状态变为Staged. -
Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件
-
Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改 !
-
Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存, 文件状态为Modified
查看文件状态:
python
git status [filename]
git status 查看所有文件状态
git add . 添加所有文件到暂存区
git commit -m "消息内容" 提交暂存区中的内容到本地仓库 -m 提交信息
忽略文件 :
有些时候我们不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等
在主目录下建立".gitignore"文件,规则如下:
- 忽略文件中的空行或以井号(#)开始的行将会被忽略。
- 可以使用Linux通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符,方括号([abc])代表可选字符范围,大括号({string1,string2,...})代表可选的字符串等。
- 如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。
- 如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。
- 如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)。
python
#为注释
*.txt #忽略所有 .txt结尾的文件,这样的话上传就不会被选中!
!lib.txt #但lib.txt除外
/temp #仅忽略项目根目录下的TODO文件,不包括其它目录temp
build/ #忽略build/目录下的所有文件
doc/*.txt #会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
三、Gerrit使用
3.1 第一次使用时配置
1)生成密钥:ssh-keygen -t rsa -C "xxx@baidu.com.cn",
在用户根目录~/.ssh下有2个文件 id_rsa, id_ras.pub
打开id_rsa.pub文件,复制内容到http://gerrit.baidu.com.cn/#/settings/ssh-keys的SSH Keys
2)、设置用户名和邮件,用于每次提交的时候的显示,使用--global参数则本机只需要设置一次。
python
git config --global user.name 中文姓名+工号 如"张三11111111"
git config --global user.email xxx.xxx@baidu.com.cn
git config --list
3)、安装git-review插件 :切换到root,sudo su命令,运行pip3 install git-review
4)、配置gitreview参数
python
git config --global gitreview.user 姓名工号
git config --global gitreview.email xxx.xxx@baidu.com.cn
# git config --global gitreview.remote origin
5)、本地关联远程仓库:切到所需目录
git remote add origin http://00332949@gitlab.baidu.com.cn/person/a/00332949/CS_test
需要ssh密钥
在这条命令中,git会自动将远程仓库的名字设置为origin,方便我们的后续操作。
python
git remote add gerrit ssh://00332949@gitlab.baidu.com.cn:29418/00332949/CS_test
查看git对应的远程仓库地址:
git remote -v
git remote rm 仓库名 删除远程链连接
5)clone文件:切到要存的目录下,
git clone ssh://00332949@gitlab.baidu.com.cn:29418/00332949/CS_test
git clone -b master ssh://00332949@gitlab.baidu.com.cn:29418/00332949/CS_test #指定分支下载
默认应该在master分支下,接下来千万别急着用git checkout -b 切换到小组的分支,否则会导致新建了一个跟小组分支名字一模一样的分支,而自己还在主分支master下。为避免以上错误,任何时候切换分支时都不要用 -b ,只在新建分支时才用 -b。
当第一次在远程界面上新建一个仓库时,下载空文件夹时,会报信息:
以上信息没问题,本地会下载好空文件夹。