作者:Chancel, 更新:2019 Sep 25, 字数:2633, 已阅:731
Git几乎是当前主流的代码管理工具,随着语言的更迭,SVN/CVS也正逐渐成为历史
Git的文章很多,入门/精进更是数不胜数
本篇旨在作一篇Git的知识纲领,包括整理最常见的知识点以及问题
Git (/ɡɪt/)[7] is a distributed version-control system for tracking changes in source code during software development.[8] It is designed for coordinating work among programmers, but it can be used to track changes in any set of files. Its goals include speed,[9] data integrity,[10] and support for distributed, non-linear workflows.[11]
Git是一个分布式版本控制系统,用于软件开发过程中源代码的更改...
本文系列用于整理基础知识点以及常见问题
如果你需要的是一份非常详细的Git资料库,可以参考Git的官方文档,这里已经包含非常详细的Git起源历史以及细致入微的操作方法
Git is a Free ... - git-scm.com
如果你更喜欢大白话一些,也可以参考廖雪峰老师的相关介绍(自行百度)
接下来开始,都是基于命令行的一些操作,可以自行尝试
本文所讲是Git最基础的操作,是开发人员必要掌握的
尝试初始化并创建一个仓库
git init
git add README.md
提交当前库
git commit -m 'first commit'
推送到远方仓库
git remote add origin http://example/chancel/example.git
git push -u origin master
如果绑定远程仓库地址错误,可以变更远程库的地址
git remote rm origin
git remote add origin http://example/chancel/example.git
远程仓库文件的推送/拉取
git pull
echo 'hello,git' > README.md
git add README.md
git commit -m '[imp] update README.md'
git push
过滤不需要的文件
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
查看/回滚提交历史
# 限制一次提交只输出一行
git log --pretty=oneline
# 查看历史指令(有时候回滚版本之后需要知道新版本是提交了什么就可以使用该指令)
git reflog
# 回滚到上一个版本,HEAD是当前版本,HEAD^上一个版本,以此类推
git reset --hard HEAD^
# 回滚到指定版本,commitid可以只输入几位,会自动对应
git reset --hard [commit id]
丢弃工作区文件修改(两种方法)
git checkout -- [file_name]
git reset HEAD [file_name]
创建并切换分支
# -b表示切换
git checkout -b dev
查看分支信息
# -a 表示all(全部,包含远程分支)
git branch -a
# 只查看远程分支
git remote -v
合并分支
git merge dev
关联远程分支到本地分支
git branch --set-upstream-to = origin/dev dev
拉取远程分支并创建为本地分支
git checkout -b master origin/master
删除分支
# 删除时不可位于删除分支
git branch -D dev
stash意为隐藏,当你正在dev上奋发图强的时候,需要临时增加功能并紧急上线,你代码写一半提交不是删掉也不是,这个时候除了新开分支,也可以选择stash当前的修改
存储当前修改到stash
git stash
查看stash列表
git stash list
恢复stash状态
git stash apple
git stash pop
多用于标志某个版本
查看所有tag
git tag
创建tag
git tag V1.0
给以往提交打tag
git tag v1.0 [commit_id]
带说明的标签
git tag v1.0 -m 'v1.0 program' [commit_id]
查看标签的详细
git show [tag_name]
推送标签
git push origin [tag_name]
# 推送所有标签
git push origin --tags
删掉标签
git tag -d v1.0
# 删掉远程标签
git tag -d [tag_name]
git push origin :refs/tags/[tag_name]