深入学习git命令

Posted Sgf227

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入学习git命令相关的知识,希望对你有一定的参考价值。

1. 集中式(svn) 和 分布式(git)区别

  1. 集中式(svn): 因为svn每次存的都是差异 需要的硬盘空间会相对的小一点 可是回滚的速度会很慢
    (1) 优点: 代码存放在单一的服务器上 便于项目的管理
    (2) 缺点: 服务器宕机: 员工写的代码得不到保障; 服务器炸了: 整个项目的历史记录都会丢失

  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命令的主要内容,如果未能解决你的问题,请参考以下文章

深入学习:Windows下Git入门教程(上)

深入学习git命令

Git版本控制软件结合GitHub从入门到精通常用命令学习手册

学习GitHub: git基本命令

Git版本控制软件结合GitHub从入门到精通常用命令学习手册

菜鸟git学习