git介绍及常用命令

Git简介

  1. linus 用C语言编写
  2. 2005年诞生
  3. 分布式版本管理系统
  4. 速度快,适合大规模,跨地区多人协同开发

 分布式管理

Git 生态

Git 分布式版本管理系统

Gitlab git私库解决方案

Github git公有库解决方案

Git安装

Centos yum install git
Ubuntu apt-get install git
Windows安装git bash
Liunx编译安装 注意不要使用git1.8以下版本,推荐使用2.7版本 

初始化

设置与配置 git config

git init
git config --global user.name "warren"
git config --global user.email warren@126.com
git clone http://xxx.git 帮助命令git help

四个区域

 四种状态

 常用命令

git add 加入暂存(索引区)
git status 查看状态
git status -s 状态概览
git diff 尚未暂存的文件
git diff --staged 暂存区文件
git commit 提交更新
git reset 回滚
git rm 从版本库中移除
git rm --cached README 从暂存区中移除
git mv 相当于mv
git rm git add三个命令

分支命令

git branch 
git branch –v
git branch –merged
git branch --no-merged
git branch -d testing
git checkout 
git merge 
git log 
git stash 
git taggit checkout 命令:用于切换分支。
git checkout -- file.ext 撤销对文件的修改
git reflog 命令分析你所有分支的头指针的日志来查找出你在重写历史上可能丢失的提交

Checkout一个文件和带文件路径git reset 非常像,除了它更改的是工作目录而不是缓存区。不像提交层面的checkout命令,它不会移动HEAD引用,也就是你不会切换到别的分支上去。 如果你缓存并且提交了checkout的文件,它具备将某个文件回撤到之前版本的效果。注意它撤销了这个文件后面所有的更改,而git revert 命令只撤销某个特定提交的更改。

git reset

--soft 	缓存区和工作目录都不会被改变
--mixed	默认选项。缓存区和你指定的提交同步,但工作目录不受影响
--hard	缓存区和工作目录都同步到你指定的提交

文件层操作

当检测到文件路径时,git reset 将缓存区同步到你指定的那个提交。比如,下面这个命令会将倒数第二个提交中的foo.py加入到缓存区中,供下一个提交使用。
git reset HEAD~2 foo.py
运行git reset HEAD foo.py 会将当前的foo.py从缓存区中移除出去,而不会影响工作目录中对foo.py的更改。
--soft、--mixed和--hard对文件层面的git reset毫无作用,因为缓存区中的文件一定会变化,而工作目录中的文件一定不变。

使用场景

远程仓库示意图

远程管理命令

git clone https://github.com/guohongze/adminset.git
git pull
git fetch
git push origin master
git remote 
git remote –v
git remote add xxx http://xxx
git remote show origin
git remote rename pb paul
git tag -a v1.0 -m ‘abc’

标签管理命令

git tag -a v1.4 -m 'my version 1.4'
git show v1.4
git tag -a v1.2 9fceb02			对历史打标签
git push origin v1.5			将标签推向远程
git push origin --tags			推送多个标签
git checkout -b version2 v2.0.0	检出标签
原文地址:https://www.cnblogs.com/xiewenming/p/7346602.html