概念
分布式版本控制系统。
集中式和分布式的区别:
集中式:版本库放在在中央服务器,如 SVN,CVS
分布式:每个人的电脑都是版本库
安装
查看系统有没有安装 Git:
$ git
Linux 安装命令:
$ sudo apt install git
配置:
$ git config --global user.name "你的名字"
$ git config --global user.email "你的邮箱"
使用
初始化 Git 仓库:
$ git init
把修改提交到暂存区:
// 添加一个文件
$ git add filename
// 添加多个文件
$ git add filename1 filename2 ...
// 添加所有文件
$ git add .
把暂存区内容提交到仓库:
$ git commit -m "修改总结"
查看仓库当前状态:
$ git status
查看所做修改:
$ git diff [filename] // 比较工作区与暂存区某文件的区别
$ git diff HEAD -- [filename] // 比较工作区与版本库最新版本某文件的区别
查看提交日志:
$ git log
$ git log --pretty=oneline // 简洁版
$ git log --oneline
$ git reflog
$ git log --graph // 有图
ps:版本号不是递增,而是SHA1生成,在分布式环境下防止版本号冲突。
版本回退:
$ git reset --hard HEAD^ // 回退到上一个版本
$ git reset --hard HEAD^^ // 回退到上上个版本
$ git reset --hard HEAD~100 // 回退到上100个版本
$ git reset --hard [版本号] // 回退到某个版本号
查看 Git 命令日志:
$ git reflog
放弃工作区的修改,回到暂存区或版本库最新版本:
$ git checkout -- [filename]
将暂存区修改撤销,放回工作区:
$ git reset HEAD [filename]
将本地仓库推到 Github 仓库:
$ git remote add origin [远程仓库链接]
将当前分支推送到远程:
$ git push -u origin master // -u 参数将本地 master 和远程 master 联系起来
$ git push origin master
$ git push origin [分支名称] // 推送其他分支
克隆远程仓库:
$ git clone [远程仓库链接]
分支:
$ git branch [分支名称] // 创建分支
$ git branch -d [分支名称] // 删除分支
$ git branch -D [分支名称] // 强行删除分支
$ git checkout [分支名称] // 切换分支
$ git checkout -b [分支名称] // 创建并切换分支
$ git branch // 查看当前分支
$ git merge [分支名称] // 将某分支合并到当前分支上
$ git merge --no-ff -m "message" [分支名称] // 不使用 Fast Forward 模式
快照:
$ git stash // 保存快照
$ git stash list // 查看快照列表
$ git stash apply // 恢复快照
$ git stash drop // 删除快照
$ git stash pop // 恢复并删除快照
查看远程库的信息:
$ git remote
$ git remote -v // 详细信息
从远程仓库获取代码:
$ git pull
将远程仓库分支与本地仓库分支建立链接:
$ git branch --set-upstream-to=[远程仓库分支] [本地仓库分支]
推送本地代码到远程仓库:
$ git push
将本地未 push 的分叉提交历史整理成直线:
$ git rebase
标签:
$ git tag [标签号] // 打标签
$ git tag // 显示所有标签
$ git tag [标签号] [版本号] // 根据版本号打标签
$ git show [标签号] // 查看标签信息
$ git tag -d [标签号] // 删除标签
$ git push origin [标签号] // 推送标签号到远程
$ git push origin --tags // 推送所有标签到远程
$ git push origin :refs/tags/[标签号] // 删除远程仓库标签