深入学习git命令
Posted Sgf227
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入学习git命令相关的知识,希望对你有一定的参考价值。
1. 集中式(svn) 和 分布式(git)区别
-
集中式(svn): 因为svn每次存的都是差异 需要的硬盘空间会相对的小一点 可是回滚的速度会很慢
(1) 优点: 代码存放在单一的服务器上 便于项目的管理
(2) 缺点: 服务器宕机: 员工写的代码得不到保障; 服务器炸了: 整个项目的历史记录都会丢失 -
分布式(git): git每次存的都是项目的完整快照,需要的硬盘空间会相对大一点(Git团队对代码做了极致的压缩,最终需要的实际空间比svn多不了太多,可是Git的回滚速度极快)
(1) 优点: 完全的分布式,客户端不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。这样即使中央仓库发生故障,我们可以先提交到本地仓库,等故障恢复后再提交到中央仓库。
(2) 缺点: 学习起来比SVN陡峭
2. git命令
安装
git --version
初始化配置
git config --global user.name "damu"
git config --global user.email damu@example.com
git config --list
初始化仓库
git init
C(新增) 在工作目录中新增文件
git status
git add ./
git commit -m "msg"
U(修改) 在工作目录中修改文件
git status
git add ./
git commit -m "msg"
D(删除 & 重命名)
git rm 要删除的文件 git mv 老文件 新文件
git status git status
git commit -m "msg" git commit -m "msg"
R(查询)
git status: 查看工作目录中文件的状态(已跟踪(已提交 已暂存 已修改) 未跟踪)
git diff : 查看未暂存的修改
git diff --cache : 查看未提交的暂存
git log --oneline : 查看提交记录
分支:
分支的本质其实就是一个提交对象!!!
HEAD: 是一个指针,它默认指向master分支,切换分支时其实就是让HEAD指向不同的分支,每次有新的提交时,HEAD都会带着当前指向的分支一起往前移动
git log --oneline --decorate --graph --all : 查看整个项目的分支图
git branch : 查看分支列表
git branch -v: 查看分支指向的最新的提交
git branch --merged:查看合并到当前分支的分支列表
git branch --no-merged:查看没有合并到当前分支的分支列表
git branch name : 在当前提交对象上创建新的分支
git branch name commithash: 在指定的提交对象上创建新的分支
git checkout name : 切换分支
git branch -d name : 删除空的分支 删除已经被合并的分支
git branch -D name : 强制删除分支
git merge branchname:合并分支
快进合并不会产生冲突,典型合并有机会产生冲突。
解决冲突:打开冲突的文件进行修改,然后依次add,commit
存储
git stash : 会将当前分支上的工作推到一个栈中
git stash apply : 将栈顶的工作内容还原 但不让任何内容出栈
git stash drop : 取出栈顶的工作内容后 就应该将其删除(出栈)
git stash pop : git stash apply + git stash drop
git stash list : 查看存储
后悔药
git checkout -- filename : 撤销工作目录的修改
git reset HEAD filename : 撤销暂存区的修改
git commit --amend : 撤销提交
reset三部曲
git reset --soft commithash :用commithash的内容重置HEAD内容
git reset [--mixed] commithash:重置HEAD内容 重置暂存区
git reset --hard commithash :重置HEAD内容 重置暂存区 重置工作目录
远程仓库命令
git remote add origin 地址:添加远程连接(别名)
git push origin dev:推送代码
git clone 地址:克隆远程仓库到本地
vim .git/config:修改远程仓库的地址,手动修改配置里的url
git pull origin dev:拉取代码,等价于git fetch origin dev + git merge origin/dev
以上是关于深入学习git命令的主要内容,如果未能解决你的问题,请参考以下文章
Git版本控制软件结合GitHub从入门到精通常用命令学习手册