赞
踩
一、Git常用命令
1.git clone
1.1 git clone <url> #克隆远程版本库
1.2 git --version #查看git版本
1.3 git status #查看状态
1.4 git config --list #查看git配置
1.5 git config --system #对当前机器上所有的用户和git项目都生效
1.6 git config --global #当前用户主目录的.gitconfig文件,对当前用户有效
1.7 git config #项目的.git目录下的config文件,仅仅对当前git管理的这个项目有效
1.8 git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -multiInst -nosession" #配置默认的文本编辑器
2.git init
2.1 git init #初始化本地版本库
3.git add
3.1 git add . #将当前新增或者修改过的文件加入到暂存区
git add --all . #将当前新增、修改或者删除的文件加入到暂存区
3.2 git add <file> #跟踪指定的文件
3.3 git add -i #进入交互模式将暂存区的文件挪出来
3.4 git add -f <file> #强制提交已忽略的文件
3.5
4.git commmit
4.1 git commit -m "commit message" #提交所有更改过的文件
4.2 git commit --amend #修改最后一次提交的备注信息
5.git log
5.1 git log #查看当前分支指向的commit之前的提交历史
git reflog #查看完整的提交历史
5.2 git log -p <file> #查看指定文件的提交历史
5.4 git log --patch -2 #查看最近2次提交的代码的差异
5.5 git log --stat #显示每次提交的统计信息
5.6 git log --pretty=oneline #每个提交显示一行
5.7 git log --pretty=format:"%h - %an, %ar : %s" #显示短hash、作者、多长时间以前、提交说明
5.8 git log --oneline --abbrev-commit --graph #可以看到整个commit树结构,包括如何合并的
5.9 git log --abbrev-commit master..feature/001 #查看feature/001的那些commit还没有合并到master中去
5.10 git log --abbrev-commit feature/001..master #查看那些commit在master上有但是feature/001还没有
5.11 git log --abbrev-commit origin/master..HEAD #查看本地的修改还有多少没有推送到远程master上去
5.12 git log --abbrev-commit feature/001 feature/002 --not master #查看在feature分支上都有的commit,在master还没有
5.13 git log --abbrev-commit feature/001...feature/002 #查看那些commit存在于两个分支的某一个,但不是两个分支都有
6.git checkout
6.1 git checkout HEAD <file> #撤销指定的未提交文件的修改内容
6.2 git checkout <branch/tag> #切换到指定分支或标签
6.3 git checkout -b feach001 origin/feach001 #创建本地分支并跟踪远程分支
6.4 git checkout -- <file> #用版本库的文件替换工作区的文件
7.git reset
7.1 git reset --hard HEAD #撤销工作目录中所有修改文件的修改内容
7.2 git reset --soft HEAD^ #撤回了git commit 的操作
7.3 git reset HEAD^ #撤回了git commit 和 git add 的操作
7.4 git reset --hard HEAD^ #就可以回退到上一个版本
7.5 git reset --hard HEAD~5 #退回到HEAD之前的倒数第5个commit的状态
7.6 git reset --hard d324644 #指定一个commit的hash值,回退到很老的版本
7.7
8.git branch
5.1 git branch #显示所有本地分支
git branch -a #查看本地和远程所有分支
5.2 git branch -vv #查看本地分支和远程分支的对应关系
5.3 git branch <new-branch> #创建新分支
5.4 git branch -d <branch> #删除本地分支
5.5 git branch -D <branch> #强制删除本地分支
9.git tag
9.1 git tag #列出所有本地标签
9.2 git tag <tagname> #基于最新提交创建标签
9.3 git tag -d <tagname> #删除标签
9.4 git tag <tagName> <版本号> #把版本号打上标签,版本号就是commit时,跟在旁边的一串字母数字
9.5 git tag -a <tagname> -m "<说明>" #创建带说明的标签
10.git diff
10.1 git diff #查看工作区和暂存区变更内容
10.2 git diff --cached #暂存区和仓库
10.3 git diff HEAD #工作区和仓库
10.4 git diff feature/001 master #两个分支之间的差异
10.5 git diff HEAD HEAD^ #两次提交之间的差异
11.git pull
11.1 git pull <remote> <branch> #下载代码及快速合并
11.2 git pull --rebase #执行变基式合并,让commit的提交历史看起来是一条直线
12.git push
12.1 git push <remote> <branch> #上传代码及快速合并
12.2 git push <remote> :<branch/tag-name> #删除远程分支或标签
12.3 git push origin --tags #上传所有标签到远程
12.4 git push origin <tagname> #推送某个标签到远程
12.5 git push -u origin master #把仓库区的主分支master提交到远程仓库里
12.6 git push -u origin <其他分支> #把其他分支提交到远程仓库
12.7 git push origin --delete serverfix #删除远程分支
13.git romote
13.1 git remote -v #查看远程版本库信息
13.2 git remote show <remote> #查看指定远程版本库信息
13.3 git remote add <remote> <url> #添加远程版本库
13.4 git remote add origin https://github.com/name/name_cangku.git #把本地仓库与远程仓库连接起来
14.git show
14.1 git show master #查看master分支指向那个commit
14.2 git show HEAD^ #查看当前分支的上一个commit
14.3 git show HEAD~2 #查看当前分支的上上个commit
14.4 git show <tagname> #查看标签信息
15.git stash
15.1 git stash #将本地修改的内容暂存起来
15.2 git stash list #查看stash列表
15.3 git stash apply #将最近一次stash的内容恢复回来但是不删除
git stash pop #恢复的同时把stash内容也删了
15.4 git stash apply stash@{0} #恢复到指定的一次stash
15.5 git stash apply --index #如果执行git stash的时候有内容放入了暂存区,恢复的时候用此命令
15.6 git stash drop stash 名称 #手动删除掉某个stash
15.7 git stash --include-untracked #将暂存区中的内容,tracked和untracked的内容全都暂存
16.git rebase
16.1 git rebase -i HEAD~3 #调整最近3个commit
16.2 git rebase --continue
16.3 git rebase --abort
16.4 git rebase --skip
16.5 git rebase <branch> #衍合指定分支到当前分支
16.6 git rebase #把分叉的提交历史“整理”成一条直线,看上去更直观
17.git merge
17.1 git merge --abort #两个分支merge时出现冲突,取消merge
17.2 git merge <branch> #合并指定分支到当前分支
17.3 git merge --no-ff <分支名字> #合并分支的时候禁用Fast forward模式,因为这个模式会丢失分支历史信息
杂项:
1.1 git mv <old> <new> #文件改名
1.2 git rm <file> #删除文件
1.3 git rm --cached <file> #停止跟踪文件但不删除
1.4 git blame <file> #以列表方式查看指定文件的提交历史
1.5 git revert <commit> #撤销指定的提交
1.6 git check-ignore -v <file> #强制提交已忽略的文件
1.7 git fetch <remote> #从远程库获取代码
1.8 git config --global color.ui true #让Git显示颜色,会让命令输出看起来更醒目
二、操作流程
1.从git上拉代码的流程
git stash --将本地修改暂存
git pull --将远程分支的代码拉到本地
git stash pop --将本地暂存的代码释放
2.对比两个分支修改的文件
git diff A..B --stat
3.将本地的master分支和远程的master分支做关联
git branch --set-upstream-to=origin/master master
4.在本地创建分支develop,推送到远程仓库
git checkout -b develop #在本地创建develop分支,并切换到develop分支
git push -u origin develop #将本地develop分支推送到远程仓库
5.修改了工作区的内容,但是还没有放入暂存区和仓库,此时要抛弃这些修改
git reset --hard HEAD
6.修改了工作区的内容,放入了暂存区,但是没有提交,此时要抛弃这些修改
git reset HEAD = git reset --mixed HEAD #将暂存区里加入的内容撤销掉,然后在工作区重新修改代码
git reset --hard HEAD #将暂存区和工作区的内容一次性抹掉
7.修改了工作区的内容,已经提交,此时要放弃这些修改
git reset --hard HEAD^ = git reset --hard commit 标识符
8.在本地commit,同时还推送到了远程仓库,此时要撤回
git revert HEAD #本地撤回commit操作
git push origin master #完美同步撤回远程仓库的commit操作了
9.在两个分支合并的的时候出现冲突,取消,不想merge
git merge --abort
10.如果在本地merge后想要撤回
git reset --hard HEAD^
11.推送了merge之后的commit到远程仓库后想要撤回
①如果是要撤回已经push到远程仓库的merge操作
②在本地执行git revert -m 1 HEAD,再执行git push origin master,此时本地和远程的提交历史都会多一个commit出来,该commit的内容和合并之前的master指向的那个commit是一样的,同时master此时指向最新的那个commit
③但是后面,如果要再次将release分支和master分支进行合并,此时是需要特殊处理的,再次在本地执行:git revert HEAD,git push origin master。就是再次将master还原到指向一个新的commit,该commit的内容与上一次merge后的那个commit一样,包含merge的内容
④最后再次将release分支与master分支进行合并,此时可以保证release分支所有的内容,都是合并到master分支的
12.查找谁在那次commit引入了bug
①git bisect start:开始二分查找
②git bisect bad:标注当前这个commit是有bug的
③git biset good v1.0.0:用tag来标注说从上一次哪个上线为止,是没有bug的,就是那个tag对应的commit之前都是好的
④git bisect reset:从二分查找状态中恢复到之前的状态
13.删除远程标签
①git tag -d v1.0 #删除本地标签v1.0
②git push origin:refs/tags/v1.0 #删除远程标签v1.0
14.将一个项目发到gitlab上
①git init
②git remote add origin https://git.lug.ustc.edu.cn/LiAnChen/mylims.git
③git add .
④git commit -m "Initial commit"
⑤git push -u origin master
15.git制作增量包
①先找到指定的开始提交id,比如 05104e3475f63e1e49fbfcbd424a4a3801b95645
②找到结束的提交id,比如 a0eb9bc6d4e1801062877fd435eefb81f11598b8
③在命令行下进入到git代码目录中,敲命令制作增量包
git archive -o hot-fix-20151001.zip HEAD $(git diff 05104e3...a0eb9bc --name-only)
注:git diff 后边的commit id, 可以只取前7位或全部写上都可以
④命令执行完成后,在当前目录生成一个.zip的文件,这个就是增量包文件了
Tips: 其实还可以把zip文件生成到指定目录中,把上边git archive的命令改一下
git archive -o /root/hot-fix-20151001.zip HEAD $(git diff 05104e3...a0eb9bc --name-only)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。