简图记录-git的基本使用

简图记录学习,部分内容参考 《git 权威指南》

目录

一、概念

1、什么是git

2、一些基础git概念 .git/文件状态/索引区暂存/分支/HEAD

二、使用git前准备工作

1、git的安装(Linux环境)

2、git的配置(写入~/.gitconfig)

3、创建仓库 git init/ git clone

三、git的基本操作

1、信息查看 log/status/diff /show/remote/blame

2、修改提交 add/commit/push/checkout/reset/pull

3、工作状态 暂存与恢复 stash/pop

4、分支管理 branch/checkout/merge

5、提交忽略管理 .gitignore

四、相关工具 github/repo/gerrit

1、代码托管github

2、仓库管理repo

3、视检支持gerrit


一、概念

1、什么是git

git:目前主流的一个完全分布式代码版本管理系统,提供方便的分支管理控制,linux作者Linus创建。

完全分布式优势: 每次clone都是一次对仓库完整备份,不需要网络就可以 做版本比较、历史记录查看、提交记录分析、分支的创建 合并 切换等。

git支持的传输方式:1、本地mount 2、ssh(加密、快速)3、git协议 4、https

git帮助查看:安装git后可以用man查看帮助,如git reset 命令,用man git-reset;

2、一些基础git概念 .git/文件状态/索引区暂存/分支/HEAD

.git:git init或者clone后,会出现一个.git目录,这个目录是Git来跟踪管理版本库。

文件状态:体现了一个 文件是否被修改 修改是否暂存 等。通过git status 可以查看,具体修改代码差异对比可以git diff查看。

索引区/暂存:我们修改了很多文件,但是只希望把其中一部分修改提交上去,index(或者stage)索引区就是做这个统计的,使用git add filename 把文件放入 索引区进行暂存,然后再使用git commit 就可以让暂存文件 生成一次本地提交。

HEAD与回退:指向当前工作节点的指针,上一个版本就是HEAD^,上上一个版本就是HEAD^^,也可以用HEAD~2表示。git reset HEAD~1 可以回退到上一个提交节点,但是回退前后的差异 被以 编辑的方式保留,可以通过git diff查看。(如果回退过程带上--hard参数,会清空这些修改,代码状态合所回退的节点一致)

二、使用git前准备工作

1、git的安装(Linux环境)

使用包管理器安装:sudo apt-get install git (也可以 从源码安装 或者 git clone版本库方式安装)

2、git的配置(写入~/.gitconfig)

常用配置

用户名称(必须):git config --global user.name xxxx

配置邮箱(必须):git config --global user.email xxxx

编辑器:git config --global user.editor xxxx(vim)

差异检查:git config --global user.tod xxxx(vimdiff)

3、创建仓库 git init/ git clone

通过克隆方式创建:git clone

本地新建:建库git init; (添加文件git add xxx; 提交修改git commit)

goodboy@ubuntu:~/git_study$ git init
Initialized empty Git repository in /home/goodboy/git_study/.git/
goodboy@ubuntu:~/git_study$ ls -al
total 12
drwxrwxr-x 3 goodboy goodboy 4096 Jun 12 08:32 .
drwxr-xr-x 5 goodboy goodboy 4096 Jun 12 08:32 ..
drwxrwxr-x 7 goodboy goodboy 4096 Jun 12 08:32 .git

 

三、git的基本操作

1、信息查看 log/status/diff /show/remote/blame

查看日志 git log; 查看文件状态(修改/暂存) git status;  查看差异改动git diff--staged 比较暂存区文件与上一次commit);

看文件变动 git watchchanged xxx;查看某次提交信息 git show [commitid];查看远程仓库信息 git remote (-v)

显示文件的每一行最后修改的版本和作者 git blame xxx;

2、修改提交 add/commit/push/checkout/reset/pull

常见操作如下图:

(1)修改文件,通过git status可以看到哪些文件修改了 暂存了,git diff 可以看差异。取消修改用git checkout xxx

(2)将新文件或者修改文件放入索引区 git add xxx ;把索引区文件释放回去 git reset;

(3)将索引区文件提交到本地仓库 git commit (-s log中带有差异文件标识;-m[信息] 带信息直接提交;--amend追加到上次本地提交);如果要取消暂存区修改,也可以用git checkout

(4)将本地提同步远程仓库 git push [库名] [分支名],把远程仓库修改同步到本地 git pull

(5)把本地当前分支 回退到某一次提交 git reset (--hard回退同时不保留回退前后差异 ) [目标提交节点]。

git reset HEAD~1 可以回退到上一个提交节点,但是回退前后的差异 被以 编辑的方式保留,可以通过git diff查看。(如果回退过程带上--hard参数,会清空这些修改,代码状态合所回退的节点一致)

简图记录-git的基本使用_第1张图片

3、工作状态 暂存与恢复 stash/pop

当我们工作到一半,希望完整的查看工作前的文件(git diff只能看差异)。

可以使用git stash命令,把当前修改状态全部放到临时区域 (让本地代码状态 无任何修改 暂存记录),然后通过 git pop恢复。

4、分支管理 branch/checkout/merge

查看当前全部分支 git branch(-a 详细内容);  创建分支 git branch [分支名]; 删除分支 git branch -d [分支名]

切换到某分支 git checkout [分支名称]; 合并分支改动 git  merge [需要同步到当前分支的分支名];

例如:在开发分支dev上的代码达到上线的标准后,要合并到 master 分支

git checkout dev
git pull
git checkout master
git merge dev
git push -u origin master

5、提交忽略管理 .gitignore

创建.gitignore文件 用于指导屏蔽哪些文件 不被git status,git add 识别,写法如下

#注释,不起实际作用

*.a #忽略扩展名称为.a文件

!lib.a #反向包含,不能忽略lib.a文件

/a.txt #忽略项目根目录下的a.txt文件

build/ #忽略build文件夹下全部文件

doc/.txt #忽略doc目录下.txt将文件,但是doc子目录不包含在内,如doc/a/.txt

四、相关工具 github/repo/gerrit

1、代码托管github

提供免费的个人公有仓库托管平台,使用流程:

1、注册账号(添加ssh共钥),创建一个仓库(得到git)

2、本地创建git项目:如git init\git add\git commit

3、添加远程仓库:git remote add origin [email protected]

4、推送:git push origin master

5、在github上合入

2、仓库管理repo

google开发的git版本管理工具(远程库管理),常用命令:

初始化repo仓库 repo init

同步repo仓库代码到本地 repo sync

启动本地工作分支 repo start

上传 repo upload

3、视检支持gerrit

基于web的代码review即版本控制系统

 

 

你可能感兴趣的:(软件工程类)