为什么要学git
团队协作开发,对于分支的合并,版本的更新需要用一套很好的工具,来协同开发。各大牛逼的互联网公司,牛逼的开发工程师,都选择git作为版本控制。
更多git的强大之处,这里不再赘述,更多git的介绍请看这里,git-wiki
git 命令大全
获取与创建项目
- git init
在项目根目录执行git init
,根目录会多出一个.git的文件夹,这个文件夹用于保存如何git相关的操作记录。 - git clone
cd
进入项目文件夹,执行git clone
将会复制别人提交的版本或者你刚在github/gitlab上创建的项目
基本快照
- git add
git add
告诉Git,把文件添加到仓库,在每次git commit之前必须把文件提交到仓库才能提交到远程- git add [file]将指定文件添加到仓库
git add .
将所有文件添加到仓库git add -u
将所有文件添加到仓库,同时将已删除的文件从仓库中删除
- git status
查看当前版本库的状态,看文件是否已添加到仓库,通常查看上次提交之后有哪些文件没有被添加到仓库 - git diff
显示尚未缓存的改动 - git commit
git commit -m "这里填提交的提示内容"
,将本地仓库中的文件提交到远程版本库 - git log
git log
用于记录每次commit的信息git log --pretty=oneline
将每次commit的记录打印成一行,内容更加精简,突出主要的commit -m “”的记录信息
- git reset
git reset HEAD
这条命令用来废除这次修改的记录,当前文件回到上一次提交的状态。git reset --hard [commit版本号]
- git rm(慎用)
- 使用这个会将所有版本库记录删除
分支与合并
- 使用这个会将所有版本库记录删除
- git branch
git branch
查看本地分支git branch -a
查看本地和远程的所有分支git branch -r
查看远程分支git branch -d
删除本地分支- 删除远程dev分支呢?->
git push :origin dev
- git checkout
git checkout [master]
切换到本地的master分支git checkout -b [dev]
创建并切换到本地的dev分支
- git merge
git merge
用于本地的指令,如果当前分支是master,本地的另一个分支是dev,git merge dev
将本地的dev分支合并到master分支 - git tag
- 通常在发布到线上正式环境时会用到
git tag publish/1.0.0
表示给当前分支打上tag标记- 删除远程tag呢?请看
git push origin :refs/tags/标签名
分享与更新项目
- git push
git push origin dev
表示提交到远程的dev分支。- 通常在本地的dev分支推送到远程的dev分支,注意本地远程分支命名要相同,保证代码不会混乱。
- git pull
git pull origin dev
表示拉远程的dev分支到本地,并和本地的dev分支合并- 通常在本地的dev分支推送到远程的dev分支,注意本地远程分支命名要相同,保证代码不会混乱。
- git fetch(不常用)
git fetch origin dev
表示拉远程的dev分支到本地,不和本地的dev分支合并
- git remote
- 分享本地创建的仓库,希望将它添加到远端仓库
git remote add github git@github.com:xuyuan923/test-git.git
将本地的仓库推送到github上名为test-git的仓库里
git本地分支与远程分支推送原则
- 本地的
分支推送到远程的 分支,保证本地和远程的同名分支相同。 - 多人合作,每天早上开机前先
git pull origin <公共开发分支>
,晚上关机前git push origin <公共开发分支>
,大家都遵守,这样代码就不会乱 - 开发时,将本地的分支切换到开发分支在写代码,保证本地的master分支不被污染
在实际开发中,我们应该按照几个基本原则进行分支管理:- 首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
- 那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;
- 你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。
所以,团队合作的分支看起来就像这样:
工作区与暂存区理解
我们把文件往Git版本库里添加的时候,是分两步执行的:
第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
高级知识
git ssh
SSH是什么?SSH公钥是让Git服务器验证你的电脑是被认证的,本地配置SSH避免了每次git要求你输入用户名、密码这些认证信息
如何配置SSH公钥看这里,Generating SSH keys
gitignore
.gitignore
是一个文件,通常我们是不希望git将本地的编辑器缓存的内容,包括.git文件,以及庞大的node-modules安装包推送到远程,如果仓库里含有.gitignore这个文件,git push会识别哪些是你不想推送到远端的文件,并选择性不推送到远端
来看一个.gitignore文件
|
|