什么是git? Git是目前世界上最先进的分布式版本控制系统,工作中或多或少会接触到git,基本上掌握git是开发人员的一项必备技能,下面是一些我总结出来的git的信息的和常用的指令。
本篇文章首发于 掘金
Git的由来
Git是有Linus(Linux之父)用C语言写的一个分布式版本控制系统,相比集中式控制系统有着极大的优势,比如不必联网(可在脱机环境查看开发的历史版本)、强大的分支管理、高安全性。
Git常用指令
初始化操作
git init
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
版本回退操作
git log //查看提交日志 --pretty=oneline(查看简略信息) --graph (分支合并图)
git reset --hard HEAD^ //回退到上一个版本,也可以 HEAD~1
git reset --hard <commit_id> //根据提交ID回退版本
git reflog //查看历史命令
git checkout -- <file> // 丢弃工作区的修改,即用版本库替换工作区
git reset HEAD <file> // 把缓存区修改回退到工作区
git rm <file> //删除一个文件
远程仓库操作
git remote add origin git@server-name:path/repo-name.git // 关联远程仓库
git push -u origin master //第一次推送 master 分支的内容
git push origin master || git push // 之后推送命令
git pull origin <branch> //获取远程主机某个分支的更新,再与本地的指定分支合并
分支管理操作
git branch //查看分支
git branch <name> //创建分支
git checkout <name> //切换分支
git checkout -b <name> //创建和切换分支
git merge <name> //合并某分支到当前分支
git merge --no-ff -m "annotation" <branch_name> //禁用Fast forward模式,可以在分支历史可出分支信息
git branch -d <name> //删除分支
git stash // 存储工作现场
git stash pop // 回到工作现场
git stash list // 查看 stash 工作区列表
git branch -d <name> //删除分支
git branch -D <name> //删除未合并的分支
多人开发操作
一般来说,master分支是主分支,因此要时刻与远程同步;
dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步
git remote //查看远程库信息 -v (查看详细信息)
git push origin <branch-name> //推送修改的分支
git checkout -b branch-name origin/branch-name // 在本地创建和远程分支对应的分支
git branch --set-upstream branch-name origin/branch-name //建立本地分支和远程分支的关联
多人开发工作模式
- 用
git push origin <branch-name>
推送修改 - 如果推送失败,则因为远程分支比你的本地更新,需要先用
git pull
合并 - 如果有合并冲突,这要根据提示解决冲突,并在本地提交
- 解决冲突后,再用
git push origin <branch-name>
再次推送
标签管理操作
本地添加标签操作
git tag <tagname> //新建一个标签,默认为HEAD,也可以指定一个commit id
git tag -a <tagname> -m 'annotation' //添加标签信息
git tag //查看所有标签
git tag -d <tagname> // 删除一个本地标签
远程添加标签操作
git push origin <tagname> // 推送一个本地标签
git push origin --tags // 推送全部未推送的本地标签
git push origin :refs/tags/<tagname> //删除一个远程标签
提交时忽略特殊文件
在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。
忽略文件的原则
- 忽略操作系统自动生成的文件,比如缩略图等
- 忽略编译生成的中间文件、可执行文件等
- 忽略带有敏感信息的配置文件
举个栗子
.DS_Store
Thumbs.db
db.json
*.log
node_modules/
public/
.deploy*/
配置别名
有些git命令单词比较难记,而且比较容易出错,这时候可以通过配置别名来提高开发效(tou)率(lan)
别名配置栗子
git config --global alias.unstage 'reset HEAD' //可以使用 `git unstage <file>` 将缓存区的修改撤销到工作区
git config --global alias.last 'log -1' //查看最新一次提交
总结
尽管git命令繁多,上手比较困难,但常用的指令就那么十来个,掌握好这十几个常用指令,在这基础上根据需求进行扩展,那么你就可以得心应手地使用git啦。