常用的专业名词
Workspace:工作区
Index/Stage:暂存区
Repository:本地仓库
Remote:远程仓库
本地分支关联远程:git branch --set-upstream-to=origin/beta beta
新建代码库
git init #在当前目录创建一个新的git代码库 git init [project-name] #新建一个目录,将其初始化为git代码库 git clone [url] #克隆一个项目至当前目录
配置
git config --list #显示当前git的配置 git config -e [--global] #编辑git配置文件 #设置代码提交的用户名和邮箱 git config --global user.name="[name]" git config --global user.email="[email]"
增加/删除文件
git add [file1] [file2] ... #添加指定文件到缓存区 git add [dir] #添加指定目录到暂存区 git add . #添加当前目录的所有文件到暂存区 git rm [file1] [file2]... #删除工作区文件,并且将这次删除放入暂存区 git mv [file-original] [file-renamed] #改名文件,并将这个改名放入暂存区
代码提交
git commit -m [message] #提交代码到仓库区 git commit -a #提交工作区自上次commit之后的变化,直接到仓库去区 git commit -v #提交时显示所有的diff信息 git commit --amend -m [message] #使用新的commit,替代上一次提交,如果代码没有发生变化,则用来改写上一次commit的提交信息 git commit --amend [file1] [file2] ... #重做上次提交,并包括指定文件的新变化
分支
git branch #列出所有本地分支 git branch -r #列出所有远程分支 git branch -a #列出所有本地分支和远程分支 git branch [branch-name] #新建一个分支,但依然停留在当前分支 git checkout -b [branch] #新建一个分支,并切换到该分支 git branch [branch] [commit] #新建一个分支,并指向指定的commit git branch --track [branch] [remote-branch] #新建一个分支,与指定的远程分支建立追踪关系 git checkout [branch-name] #切换到指定分支,并更新工作区 git checkout - #切换到上一个分支 git merge [branch] #合并指定分支到当前分支 git cherry-pick [commit] #选择一个commit,合并进当前分支 git branch -d [branch-name] #删除分支 #删除远程分支 git push origin --delete [branch-name] git branch -dr [remote/branch]
标签
git tag #列出所有的tag git tag [tag] #新建一个tag在当前commit git tag [tag] [commit] #新建一个tag在指定的commit git tag -d [tag] #删除本地tag git push origin :refs/tags/[tagName] #删除远程tag git show [tag] #查看tag信息 git push [remote] [tag] #提交指定tag git push [remote] --tags #提交所有的tag git checkout -b [branch] [tag] #新建一个分支,指向某个tag
查看信息
git status #显示所有变更的文件 git log #显示当前分支的版本历史 git log --stat #显示commit历史,以及每次commit发生变更的文件 git diff #显示暂存区和工作区的差异 git diff --cached [file] #显示暂存区与上一个commit的差异 git diff HEAD #显示工作区与当前分支最新的commit之间的差异
远程同步
git fetch [remote] #下载远程仓库的所有变动 git remote -v #显示所有远程仓库 git remote add [shortname] [url] #增加一个新的远程仓库,并命名 git pull [remote] [branch] #取回远程仓库的变化,并与本地分支合并 git push [remote] [branch] #上传本地分支至远程仓库 git push [remote] --force #强行推送当前分支到远程仓库,即使有冲突 git push [remote] --all #推送所有分支到远程仓库
撤销
git checkout [file] #恢复暂存区的指定文件到工作区 git checkout . #回复暂存区的所有文件到工作区 git reset [file] #重置暂存区的指定文件,与上一次的提交保持一致,但是工作区不变
Git分支管理策略
主分支Master(自动建立)
开发分支Develop
#git创建Develop分支命令 git checkout -b develop master #将Develop分支发布到Master分支的命令 git checkout master #切换到master分支 git merge --no-ff develop #对develop分支进行合并
临时性分支
功能分支(feature):为了开发某种特定的功能,从develop分支上面分出来的,要再并入Develop
#创建一个功能性分支 git checkout -b feature-x develop #将功能分支合并到develop分支 git checkout develop git merge --no-ff feature-x #删除feature分支 git branch -d feature-x
预发布分支(release):发布正式版本之前,预发布的版本用于测试,预发布结束后,必须合并到Develop和Master分支
#创建一个预发布分支 git checkout -b release-1.2 develop #合并到master分支 git checkout master git merge --no-ff release-1.2 #对合并生成的新节点,做一个标签 git tag -a 1.2 #再合并到develop分支 git checkout develop git merge --no-ff release-1.2 #最后删除预发布分支 git branch -d release-1.2
修补bug分支(fixbug):软件上线后出现bug,进行修补bug的分支,从Master分支上分出来的,修补结束后,与Develop和Master分支进行合并。
#创建一个修补bug分支 git checkout -b fixbug-0.1 master #合并到master分支 git checkout master git merge --no-ff fixbug-0.1 git tag -a 0.0.1 #合并到develop分支 git checkout develop git merge --no-ff fixbug-0.1 #删除修补的bug分支 git branch -d fixbug-0.1