下面的内容是关于本地仓库和远程(服务器)仓库的版本控制,命令行实现项目版本的上传和更新。当然,只有团队开发,Git才有实际价值。关于Git的实现原理,这里不作介绍。
简介
- 配制身份
git config --global user.name xxx
git config --global user.email xxx
- 创建本地仓库(切换到对应的项目目录下)
git init ;生成一个隐藏的.git文件夹
- 添加文件
git add XXX ;XXX是文件/文件夹
git add .
git add -A ;添加当前所有的
- 提交文件
git commit -m "First commit."
- 查看修改内容
git status ;查看自上次提交开始的修改内容
git diff ;查看更改的内容
git diff XXX ;XXX指具体的文件
- 撤销未提交的修改
git checkout XXX
git reset HEAD XXX
- 查看提交记录
git log
git log id -1 ;查看一条提交记录
git log id -1 -p ;查看记录详情
- 分支操作
git branch ;查看版本库的所有分支
git branch XXX ;创建分支
git checkout XXX ;切换分支
git merge XXX ;合并分支
git branch -D XXX ;删除分支
- 远程协作
git clone url ;下载远程版本库代码
git remote add origin url ;origin=Git地址(url)
git push origin master ;本地内容同步到远程,origin指定远程Git地址
git fetch origin master ;远程同步到本地,代码存放到origin/master分支上
git diff origin/master
git merge origin/master ;将origin/master合并到主分支
git pull origin master ;远程同步到本地,效果等同fetch+merge
总结
1.Git配制:
git config user.name "名字"
git config user.email "邮箱"
git init
tree .git/
2.状态:
git status
3.分区:
Working directory:工作区
Staging area:缓存区
repo:版本库
4.添加&提交:
git add 文件;添加指定文件
git add -A;添加所有工作区文件
git commit;提交到版本库
git commit -m "描述信息";提交到版本库并添加描述信息
补充: ls -R;递归列出目录结构
5.日志和差异比较
git log -1
git log -2
git log --oneline
git log -1 -p
gitk;git日志图形界面
git diff 文件名;比较工作区和缓冲区的差异
git diff --cached;比较缓冲区和版本区的差异(cached=staged)
git diff HEAD;比较工作区和版本区的差异
git checkout;取出缓冲区历史版本
git checkout -- .
git checkout HEAD;取出版本库历史版本
6.Git分支:
分支合并:
- 快进;fast forward
- git merge 分支名;新做了一次提交
git checkout -b 分支名;创建分支并切换到此分支(=git branch 分支名; git checkout 分支名)
git branch -v;查所有分支详细信息
git branch -d 分支名;删除指定分支
git diff --cached;比较缓冲区和版本区的差异
7.藏匿工作状态:
git stash;藏匿工作区未完成的工作
git stash list;列出所有藏匿的工作
git stash apply;恢复藏匿的工作
git stash clear;清空所有藏匿的工作
8.标签管理:
git tag;查看所有标签
git tag 标签名;打标签(默认是HEAD指向的分支的最近一次提交)
git tag 标签名 日志提交码-7位;给某次提交打标签
git tag -a 标签名 -m 提示信息;给标签添加提示信息
git tag -d 标签名;删除标签
git show 标签名;查看标签
补充:
git log --oneline;查看所有日志并一行显示一条日志
git checkout 标签名;项目回到指定版本
a=add m=message d=delete
9.项目打包:
git archive -o 包名 HEAD;对项目最新的状态打包(忽略.ignore中的文件)
git archive -o 包名 提交码;对指定状态打包
补充:
git status;查工作区状态
git log -1 --oneline;查最新一次提交的日志
o=output
10.清理工作区:
git clean -f;强制清理工作区
git clean -f -n;预期强制清理工作区
git clean -d -f -n = git clean -dfn;预期强制清理工作区文件夹
git clean -df;强制清理工作区文件夹
git clean -dfi;交互式强制清理工作区文件夹
补充:
f=force n=next d=directory i=interact
11.日志过滤:
git log --oneline | wc -l;查日志条数
git log -10 --oneline;查最新10条
git log --oneline | tail -10;查最旧10条
git log --since='2018-1-1' --oneline | wc -l;查某日期以后的提交
git log --after='2018-1-1' --oneline | wc -l;查某日期以后的提交
git log --before='2013-12-31' --oneline | wc -l;查某日期之前的提交
git log --until='2013-12-31' --oneline | wc -l;查某日期之前的提交
git log --since '1.week';查一周之内的提交
git log --since '3.weeks';查三周之内的提交
git shortlog -sn;查所有作者提交情况
git log --author="作者名" --oneline;查某作者的提交
git log --grep="Source" --oneline;查message中含有Source的提交
git log -S"Source";查修改内容中包含Source的提交
git log --文件名 --oneline;查修改了指定文件的提交
git log 标签名1..标签名2;查两个标签之间的提交
补充:
s=summary n=number
12.Git图形化界面:
git gui;git图形界面
git init gitk && cd gitk;初始化git项目并切换到该项目
gitk;git日志图形界面
gitk --all;查所有分支
git checkout -b dev;创建分支并切换到该分支
git log --oneline --graph --all;查所有分支的提交,graph代表图示
补充:
git add -A;添加所有工作区文件
13.Git远程:
git remote -v;查远程信息
git clone url.git;远程克隆项目
git clone 目录1/.git 目录2;本地克隆项目
git branch -r;查远程分支
git branch -a;查所有分支
git branch -a -v;查所有分支信息
git fetch origin;获取远程分支,不合并到本地分支
git merge origin/master;合并到本地分支
参考:
<第一行代码> 第2版 | 郭霖
图解Git++ | 孙简