Git全局设置:
1
2
| git config --global user.name "wanzi"
git config --global user.email "iwz2099@163.com"
|
Git提交代码
1
2
3
4
5
6
7
8
9
10
11
12
13
| git clone git@github.com:iwz2099/test.git
cd test
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
#上面命令将本地的master分支推送到远程origin分值,同时-u指定当前仓库的默认远程分支名为origin,后面就可以不加任何参数使用git push了
#包含本地分支都推送到origin主机
git push -u origin --all
#如果本地是基于case_dev_wanzi分支开发,推送到远程case_dev分支
git push origin case_dev_wanzi:case_dev
|
Git查询和清理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| git status #查询当前分支状态信息
git log #查看当前分支commit信息
git log -n3 #查询最近三次提交commit
git log -p -2 #查询每次提交的内容差异,只显示最近2条提交记录,
git log --stat #查询每次提交的简历统计信息
git log --pretty=oneline #将每次提交的信息一行显示,oneline可以是short,full,fuller
git log --pretty=format:"%h - %an, %ar : %s"
git log --pretty=format:"%h %s" --graph #ASCII字符串来形象地展示你的分支、合并历史
git reflog #显示所有分支所有操作信息(包括commit,reset和已经删除的commit)
git reflog #显示最近10条日志
git grep -n wanzi #搜索提交历史和工作目录
git grep --count wanzi #搜索显示次数
git clean #移除没有忽略的未跟踪文件
git clean -d #清理工作目录
git clean -d -n #-n测试清理工作目录,实际未清理
|
Git分支操作:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| git branch #查看当前分支
git branch -v #查看每个分支的最后一次提交
#基于远程master分支创建本地dev分支
git checkout -b dev origin/master
git branch --merged #查看哪些分支合并到当前分支
git branch --no-merged #查看哪些分支尚未合并到当前分支
#新开发一个功能,-b创建分支,并切换到新创建的分支上
git checkout -b dev-20180720-111111-wanzi
相当于:
git branch r-20180720-111111-wanzi
git checkout r-20180720-111111-wanzi
将开发后功能合并到Master主干
git checkout master
git merge dev-20180720-111111-wanzi
|
Git合并操作
基于远程master新建分支issue54,基于该分支进行开发项目
1
2
| git remote add origin git@github.com:iwz2099/test.git
git checkout -b issue54 origin/master
|
功能开发完后向把开发后的功能合并到远程分支
1
2
3
4
5
| git fetch origin #拉去差异信息
git merge origin/master #合并远程分支到当前项目
git push origin master #推送代码到远程分支
git log --no-merges issue54..origin/master #查看master哪些信息没有合并到issue54分支里。
|
Git tag操作
1
2
3
4
5
6
7
8
9
10
| git tag #列出当前项目tag信息
git tag -l 'wanzi-2018*' #-l还可以只列出自己的分支
git tag v1.8-20180720 #创建标签(一般临时用)
git tag -a v1.8-20180720 -m 'wanzi version 1.8' #-a创建tag,-m并添加说明,会存储tag信息
git show v1.8-20180720 #查看标签信息,这个时候可以对比下git tag -a和git tag差别
git push origin tag_name #推送tag到远程仓库
git push origin --tags #一次性推送很多tag到远程仓库
git push origin :tag_name #删除远程tag信息
git checkout -b dev-20180720-111111-wanzi v1.2.0 #基于某个分支新建一个tag版本
git branch -D dev-20180720-123333-wanzi #强制删除一个没有合并的分支
|
Git多人协作:
1
2
3
4
5
6
7
8
9
10
| #A码农基于远程master新建分支feature1
git checkout -b feature1 origin/master
#B码农基于远程master新建分支feature11
git checkout -b feature11 origin/master
#A码农先开发完,并推送代码到远程服务的feature1分支,B码农后开发完,想把改过信息合并到feature1
git fetch origin
git merge origin/feature1
git push -u origin feature11:feature1
|
Git取消暂存区文件和取消文件修改
1
2
3
4
5
6
7
| #代码git add到缓存区,并未commit提交,回滚代码
git reset HEAD . 或者
git reset HEAD a.txt
这个命令仅改变暂存区,并不改变工作区,这意味着在无任何其他操作的情况下,工作区中的实际文件同该命令运行之前无任何变化
git checkout -- . #取消路径所有修改,回到上一个commit版本
git checkout -- a.txt #取消a.txt所有改动,回到上一个commit版本
|
Git回滚到上次提交版本
1
2
3
4
5
6
7
| git log
git reset --hard <commit_id> #回退一次提交的commit id
git reset --hard HEAD^ #回退到上一版本
git reset --hard HEAD^^ #回退到倒数第二版
git reset --hard HEAD~4 #回退到倒数第四版
git push origin HEAD --force # 强制提交一次,之前错误的提交就从远程仓库删除(拥有项目管理权限的时候一定要慎重)
|
Git回滚master代码到某个tag版本
- 基于release tag新建回滚临时分支,并将分支强制推送到远程master
1
| git checkout -b rollback_20180720 r-20180720-111225-wanzi
|
1
| git push origin rollback_20180720:master -f
|
Git其他操作
1
| git commit --amend --only -m 'fix: 修复一个bug' #修改提交信息
|
1
| git commit --amend --author="wanzi <iwz2099@163.com>"
|