文章目录
2015-09-15 by xiaoxia
0、概念
工作区 –> git add –> 暂存区 –>git commit –> 分支(与暂存区合称版本库) –>git push –> 远程仓库
表格 1:命令概览
命令 | 作用 | 参数 |
git init | 初始化 | |
git add | . :添加所有文件 filename:添加文件 | |
git commit | -m”xxxx”:添加提交的备注 | |
git push | 推送 | origin branchname:推送分支 origin tagname:推送某个标签到远程 origin –tags:一次性推送全部尚未推送到远程的本地标签 origin :refs/tags/name:从远程删除 |
git clone | URL:从远程仓库克隆master分支 | |
git pull | 抓取远程对应分支 | |
git status | 查询状态:文件添加、更新、合并状态 | |
git diff | — file:查看不同,显示修改 HEAD — file:查看工作区和版本库里最新版本的区别 | |
git log | 查看日志 | –graph:查看分支合并图 |
git reflog | 查看所有提交日志,包括返回的版本提交 | |
git rm | filename:从版本库中删除该文件 | |
git reset | 把暂存区修改回退到工作区 | HEAD file:把暂存区的文件修改退回【撤销add还要checkout】 –hard HEAD^:回到上一个版本【返回版本】 –hard commit_id:返回的对应版本 |
git checkout | 查看工作区变化 | — file:可以丢弃工作区的修改【撤销工作区修改】 name:切换到分支 -b name:创建并切换到分支 -b name origin/name:创建远程origin的name分支到本地 |
git branch | 查看分支信息 | name:创建分支 -d name:删除分支,之前需要合并 -D name:强行删除分支 –-set-upstream dev origin/dev: 指定本地dev与远程origin/dev分支链接 |
git merge | name:将name分支合并到当前分支 –no-ff name:强制禁用Fast forward模式来合并,会保留历史分支信息 | |
git stash | 存储工作现场 | list:查看储存的现场列表 apply:恢复工作现场 drop:删除储存的工作现场 pop :恢复工作现场,并删除储存的 |
git remote | 查看远程库信息 | add origin git@server-name:path/repo-name.git:关联远程库 -v:显示详细的远程库信息 |
git tag | 查看标签 | name:给对应分支打标签 name commit_id:给对应的commit打标签 show tagname:参看标签详细信息 -a tagname -m "xxx" :commit_id:打标签并给标签添加说明 -s tagname -m "blablabla…" :用PGP签名标签 -d name:删除标签 |
git config | 设置当前 | –global:设置全局 |
1、基本流程
git init
git add file/.
git commit -m"xxx"
git push
2、常用命令
git clone 下载
git pull 从远程仓库下拉
git status 查询状态
git diff file 查看不同,显示修改
git diff HEAD — readme.txt查看工作区和版本库里最新版本的区别
git log 查看日志,注意不能查看回溯间的
git log –pretty=oneline //一行显示
git reflog 查看所有提交日志
git rm 从版本库中删除该文件
3、关于返回
A、返回版本
git reset –hard HEAD^ 回到上一个版本
//HEAD表示当前版本,HEAD^上一个,HEAD^^上两个。。。
git reset –hard commit_id 返回的对应版本
//commit_id 可以通过git reflog 查
B、工作区(没有add)修改撤销
git checkout — file 可以丢弃工作区的修改
//git checkout 查看文件变更
C、暂存区(没有commit)修改撤销
git reset HEAD file 把暂存区的修改退回到工作区
//git reset 将整个暂存区退回
git checkout — file 可以丢弃工作区的修改
D、版本(没有push)撤销
参考A
E、已经推送(push)
4、关于分支
git branch name 创建分支
git branch 查看分支信息
git checkout name 切换到分支
git checkout -b name 创建并切换到分支
git merge name 将name分支合并到当前分支
git branch -d name 删除分支,之前需要合并
git branch -D name 强行删除分支
合并冲突解决:利用git status查看冲突的文件,然后修改,提交
git log –graph 查看分支合并图
git merge –no-ff dev 强制禁用Fast forward模式来合并,这样会保留历史分支信息
5、关于中断、储存工作现场
git stash 存储工作现场
git stash list 查看储存的现场列表
git stash apply 恢复工作现场
git stash drop 删除储存的工作现场
git stash pop 恢复工作现场,并删除储存的
6、关于远程仓库
git remote add origin git@server-name:path/repo-name.git 关联一个远程库
git remote 查看远程库信息
git remote -v 显示详细的远程库信息
git push origin branchname 推送分支
git checkout -b name origin/name 创建远程origin的dev分支到本地
git pull 抓取远程对应的分支
git branch –set-upstream dev origin/dev 指定本地dev与远程origin/dev分支链接
7、关于标签
标签也是版本库的一个快照,其实它就是指向某个commit的指针,但不能移动。
git tag v1.0 给对应分支打标签
git tag 查看标签
git tag v0.9 commit_id 给对应的commit打标签
git show tagname 参看标签详细信息
git tag -a tagname -m "version 0.1 released" commit_id 打标签并给标签添加说明
git tag -s <tagname> -m "blablabla…" 用PGP签名标签
git tag -d v0.1 删除标签
git push origin <tagname> 推送某个标签到远程
git push origin –tags 一次性推送全部尚未推送到远程的本地标签
git push origin :refs/tags/v0.9 从远程删除
8、其他
.gitignore文件: 把要忽略的文件名填进去,Git就会自动忽略这些文件。
git config –global alias.st status 配置别名,用st代替status
配置Git的时候,加上–global是针对当前用户,如果不加,只对当前仓库起作用。
配置文件:.git/config,对每个仓库;用户目录下的,为全局的配置文件
9、搭建Git服务器
待补充
10、补充
10.1、.gitignore 文件的例子
# 忽略所有 .a 结尾的文件 *.a # 但 lib.a 除外 !lib.a # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO /TODO # 忽略 build/ 目录下的所有文件 build/ # 会忽略 doc/notes.txt 但不包括 doc/server/notes.txt doc/notes.txt
10.2、我的团队使用流程
1、管理员新建项目
A、先在gitlab新建project,得到项目地址,如: https://gitlab.com/evanxia/xxx.git;
B、克隆到本地,然后进入项目文件夹,将项目拷贝进去;
C、git init –> git add . –> git commit –> git push origin master;
D、在gitlab平台中新建dev分支;
2、开发者开发项目
A、首次:克隆项目到本地,然后拉取dev分支新建到本地:
git checkout -b dev origin/dev
B、新建并切换到一个自定义的分支如:xia;
git checkout -b xia
C、然后开发,可用git status查看工作区状态;
D、在xia分支中提交代码:git add -A –>git commit;
E、 切换到dev分支,先pull拉取当点dev最新代码,然后将xia分支合并到dev,再提交:
git checkout dev git pull git merge xia #可能要处理冲突 git status git push origin dev
F、开发过程就是一直循环B~E;
11、参考
参考:http://www.liaoxuefeng.com
转载标明出处:https://blog.evanxia.com/2016/01/141