Git是目前世界上最先进的分布式版本控制系统
远程仓库Remote、本地仓库Repository、工作区workspace、暂存区index等概念介绍。
远程仓库:作为代码的远程托管平台,列如github、gitlab等。
本地仓库:我们自己本地储存的一份代码,将远程代码fetch/clone后就会到本地仓库。
工作区:我们可以看到的和修改的就是工作区代码,通过切换本地仓库分支,该分支的代码就会加载到工作区。
暂存区:暂存区,或者叫待提交更新区,在提交进入Repository之前,我们可以把所有的更新放在暂存区。
工作流程:
公共项目
1 开发者先从公用仓库中fork一个分支到自己个人的git远程仓库
2 开发者将项目从个人远程仓库fetch/clone到本地仓库并切换的对应分支
3 进行代码开发
4 将需要提交的代码先add到暂存区
5 将暂存区的代码提交到本地仓库
6 将本地仓库的代码push到个人远程仓库
7 发送合并到主分支的请求,解决冲突,等待代码审核
个人项目则没有公共远程仓库的概念
1 个人远程仓库创建两个分支:master分支和dev分支
2 将远程仓库代码fetch/clone到本地仓库
3 在本地新建dev分支并关联远程仓库的dev分支
4 切换至dev分支并pull代码到工作区
5 开发代码
6 将需要提交的代码先add到暂存区
7 将暂存区的代码提交到本地仓库
8 将本地仓库的代码push到个人远程仓库
Git命令总结:
一、新建代码库
1 git init 在当前目录新建一个Git代码库
2 git clone [url] 下载一个项目和它的整个代码历史
二、配置
Git的设置文件为.gitconfig,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)。
1 git config –list 显示当前的Git配置
2 git config -e [–global] 编辑Git配置文件
3 git config [–global] user.name “[name]”
git config [–global] user.email “[email address]” 设置提交代码时的用户信息
三、增加/删除文件
1 git add [file1] [file2] … 添加指定文件到暂存区
2 git add [dir] 添加指定目录到暂存区,包括子目录
3 git rm [file1] [file2] … 删除工作区文件,并且将这次删除放入暂存区
四、代码提交
1 git commit -m [message] 提交暂存区到本地仓库区
2 git commit --amend -m [message] 使用一次新的commit,替代上一次提交
五、分支
1 git branch –a 列出所有本地分支和远程分支
2 git branch [branch-name] 新建一个分支,但依然停留在当前分支
3 git checkout -b [branch] 新建一个分支,并切换到该分支
4 git branch --track [branch] [remote-branch] 新建一个分支,与指定的远程分支建立追踪关系
5 git checkout [branch-name] 切换到指定分支,并更新工作区
6 git branch --set-upstream [branch] [remote-branch] 在现有分支与指定的远程分支之间建立追踪关系
7 git merge [branch] 合并指定分支到当前分支删除分支
8 git branch -d [branch-name] 删除分支
9 git push origin --delete [branch-name]
git branch -dr [remote/branch] 删除远程分支
六、查看信息
1 git status 显示有变更的文件
2 git log 显示当前分支的版本历史
3 git diff 显示暂存区和工作区的差异
七、远程同步
1 git fetch [remote] 下载远程仓库的所有变动
2 git remote –v 显示所有远程仓库
3 git remote add [shortname] [url] 增加一个新的远程仓库,并命名
4 git pull [remote] [branch] 取回远程仓库的变化,并与本地分支合并
5 git push [remote] [branch] 上传本地指定分支到远程仓库
6 git push [remote] –force 强行推送当前分支到远程仓库,即使有冲突
7 git push [remote] –all 推送所有分支到远程仓库
八、撤销
1 git checkout [file] 恢复暂存区的指定文件到工作区
2 git checkout [commit] [file] 恢复某个commit的指定文件到暂存区和工作区
3 git checkout . 恢复暂存区的所有文件到工作区
4 git reset –hard 重置暂存区与工作区,与上一次commit保持一致
5 git reset [commit] 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变
6 git reset --hard [commit] 重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致