git简介
一、什么是Git
Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
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别名即可