创建版本库
-
全局配置:
git config --global user.name "Your Name" git config --global user.email "email@example.com"
-
工作区提交文件到暂存区,暂存区提交文件到本地分支
git add <filename> git commit -m "注释信息"
时光穿梭机
git status #查看当前工作区,暂存区状态
git diff <filename> #查看文件修改信息,工作区和暂存区比较
git diff --cached <filename> #暂存区和分支比较
git diff HEAD -- <filename> #工作区和分支比较
-
版本回退
- HEAD表示当前版本,HEAD^ 表示上一个版本,HEAD^^ 表示再上一个版本,依次
- HEAD~100表示第前100个版本
git reset --hard commid_id #回退工作区文件到版本库 git log #查看当前状态及之前的提交日志 git reflog #查看所有提交日志
-
撤销修改
git checkout -- <filename> #撤销工作区文件修改 git reset HEAD <filename> #撤销暂存区文件的提交,还需要再在工作区撤销才能彻底撤销
-
删除文件
git rm <filename>从工作区删除文件 git checkout -- <filename>用分支中的版本替代工作区版本
远程仓库
ssh-keygen -t rsa -C "youremail@example.com" # 生成SSH KEY
-
添加远程仓库
git remote add origin git@server-name:path/repo-name.git #关联远程仓库 git push -u origin master#把本地master分支推送到远程仓库中,并将本地master分支与远程master分支绑定 git push <远程主机名> <本地分支名>:<远程分支名>
分支管理
-
创建和合并分支
查看分支:git branch 创建分支:git branch <name> 切换分支:git checkout <name> 创建+切换分支:git checkout -b <name> 合并某分支到当前分支:git merge <name> 删除分支:git branch -d <name>
-
解决冲突
git log --graph #查看分支合并图 git log --graph --pretty=oneline --abbrev-commit
-
分支管理
git merge --no-ff -m "merge with no-ff" dev #--no-ff可以看到详细合并图
-
Bug分支
git stash #保存当前工作区 git stash list #查看保存的工作区 git stash apply #恢复第一个工作区 git stash pop #删除第一个工作区 git stash pop #恢复同时删除第一个工作区 git stash apply stash@{0} #恢复指定工作区
-
Feature分支
git branch -D <name> #强制删除branch分支
-
多人协作
查看远程库信息,使用git remote -v; 本地新建的分支如果不推送到远程,对其他人就是不可见的; 从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交; 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致; 建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name 或git branch --set-upstream-to=origin/branch-name branch-name; 从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。
标签管理
- 创建标签
git tag <tagname> (<commid _id>)#新建一个标签,默认是HEAD,也可以指定commit_id; git tag -a <tagname> -m "blablabla..." #可以指定标签信息; git tag #可以查看所有标签。
- 操作标签
git push origin <tagname> #可以推送一个本地标签; git push origin --tags #可以推送全部未推送过的本地标签; git tag -d <tagname> #可以删除一个本地标签; git push origin :refs/tags/<tagname> #可以删除一个远程标签。