git简介

一、什么是Git

Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKeeper,后者之前一直是 Linux 内核开发人员在全球使用的主要源代码工具。开放源码社区中的有些人觉得BitKeeper 的许可证并不适合开放源码社区的工作,因此 Torvalds 决定着手研究许可证更为灵活的版本控制系统。尽管最初 Git 的开发是为了辅助 Linux 内核开发的过程,但是我们已经发现在很多其他自由软件项目中也使用了 Git。例如 很多 Freedesktop 的项目迁移到了 Git 上。

二、Git和SVN的区别

传统版本集中式控制系统,与中央服务器进行交互版本控制。

 分布式版本控制,将database同步到本地,防止中央服务器瘫痪的时候无法备份文件。 

通过以上两图的比较我们可以看出,两者的主要区别在于:

SVN主要存储的是文件中的差异,而Git是备份完整的文件。

此外:

1、Git是分布式的SCM,SVN是集中式的

2、Git每个历史版本存储完整的文件,SVN存储文件差异

3、Git可离线完成大部分操作,SVN则相关

4、Git有着更优雅的分支和合并实现

5、Git有更强的撤销修改和修改版本历史的能力

6、Git速度更快、效率更高

 三、Git的三个级别

local>global>system 本地仓库>当前用户>system

三种方式查看git文档:

  git config --help

  git help config

  man git -config

以下命令配置每次提交的用户信息

git config --global user.name  XXXXX
git config --global user.email  XXXXX

config的增加:

git config --global --add user.name shaw
git config --global --add user.email xxxxx@qq.com

config的查看:

git config --get user.name 
git config --list --global

config的删除:

git config --global --unset user.name 

当user.name为多个的时候,user.name后面要制定相对应的名称

config的修改:

git config --global user.name xxxx

另外config还可以重新命名命令行:

比如我们要给重新命名一下命令git log --oneline --decorate --graph --all

则可以输入:

git config --global alias.lol "git log --oneline --decorate --graph --all"

这样下次只要输入 git lol 就可以达到输入之前命令的效果了。

 四、Git的工作流程

Git有三个工作区构成

 1、工作区(working directory) 也就是你所操作的工作区
 2、暂存区(stage index)  即将提交到历史记录区的一个缓冲区
 3、历史记录区(history)   历史记录区

 Git使用40个16进制字符的SHA-1 Hash来唯一标识对象,当一个文件被提交到暂存区的时候,同时也生成一个唯一标识,这样也提高了效率。 

 五、git命令速查

git branch 查看本地所有分支
git status 查看当前状态 
git commit 提交 
git branch -a 查看所有的分支
git branch -r 查看远程所有分支
git commit -am "init" 提交并且加注释 
git remote add origin git@192.168.1.119:ndshow
git push origin master 将文件给推到服务器上 
git remote show origin 显示远程库origin里的资源 
git push origin master:develop
git push origin master:hb-dev 将本地库与服务器上的库进行关联 
git checkout --track origin/dev 切换到远程dev分支
git branch -D master develop 删除本地库develop
git checkout -b dev 建立一个新的本地分支dev
git merge origin/dev 将分支dev与当前分支进行合并
git checkout dev 切换到本地dev分支
git remote show 查看远程库
git add .
git rm 文件名(包括路径) 从git中删除指定文件
git clone git://github.com/schacon/grit.git 从服务器上将代码给拉下来
git config --list 看所有用户
git ls-files 看已经被提交的
git rm [file name] 删除一个文件
git commit -a 提交当前repos的所有的改变
git add [file name] 添加一个文件到git index
git commit -v 当你用-v参数的时候可以看commit的差异
git commit -m "This is the message describing the commit" 添加commit信息
git commit -a -a是代表add,把所有的change加到git index里然后再commit
git commit -a -v 一般提交命令
git log 看你commit的日志
git diff 查看尚未暂存的更新
git rm a.a 移除文件(从暂存区和工作区中删除)
git rm --cached a.a 移除文件(只从暂存区中删除)
git commit -m "remove" 移除文件(从Git中删除)
git rm -f a.a 强行移除修改后文件(从暂存区和工作区中删除)
git diff --cached 或 $ git diff --staged 查看尚未提交的更新
git stash push 将文件给push到一个临时空间中
git stash pop 将文件从临时空间pop下来
---------------------------------------------------------
git remote add origin git@github.com:username/Hello-World.git
git push origin master 将本地项目给提交到服务器中
-----------------------------------------------------------
git pull 本地与服务器端同步
-----------------------------------------------------------------
git push (远程仓库名) (分支名) 将本地分支推送到服务器上去。
git push origin serverfix:awesomebranch
------------------------------------------------------------------
git fetch 相当于是从远程获取最新版本到本地,不会自动merge
git commit -a -m "log_message" (-a是提交所有改动,-m是加入log信息) 本地修改同步至服务器端 :
git branch branch_0.1 master 从主分支master创建branch_0.1分支
git branch -m branch_0.1 branch_1.0 将branch_0.1重命名为branch_1.0
git checkout branch_1.0/master 切换到branch_1.0/master分支
du -hs
git branch 删除远程branch
git push origin :branch_remote_name
git branch -r -d branch_remote_name
-----------------------------------------------------------
初始化版本库,并提交到远程服务器端
mkdir WebApp
cd WebApp
git init 本地初始化
touch README
git add README 添加文件
git commit -m 'first commit'
git remote add origin git@github.com:daixu/WebApp.git
增加一个远程服务器端
上面的命令会增加URL地址为'git@github.com:daixu/WebApp.git',名称为origin的远程服务器库,以后提交代码的时候只需要使用 origin别名即可
原文地址:https://www.cnblogs.com/shawWey/p/6698686.html