1 git基础
1.1 git与其它版本控制(SVN)的区别
(1)Git是分布式的,而Svn不是分布的;
GIT跟SVN一样有自己的 集中式版本库或服务器。但,GIT更倾向于被使用于分布式模式,也就是每个开发人员从中心版本库/服务器上chect out代码后会在自己的机器上克隆一个自己的版本库。可以这样说,如果你被困在一个不能连接网络的地方时,你仍然能够提交文件,查看历史版本记录,创建项 目分支等。
(2)对待数据的方式不同。
GIT把内容按元数据方式存储,而SVN是按文件。
A.GIT在每次你提交更新,或保存项目状态时,对当时的全部文件制作一个快照并保存这个快照的索引;如果文件没有修改,Git不再重新存储该文件,而是只保留一个链接指向之前存储的文件。 Git 对待数据更像是一个快照流。
B.其它大部分系统(SVN)以文件变更列表的方式存储信息,即保存的信息等于一组基本文件和每个文件随时间逐步累积的差异;
(3)近乎所有操作都是本地执行。
Git 中的绝大多数操作都只需要访问本地文件和资源,一般不需要来自网络上其它计算机的信息。在本地磁盘上就有项目的完整历史,所以大部分操作看起来瞬间完成。
集中式版本控制系统大部分操作都要基于网络进行操作。
(4)版本库
SVN只能有一个指定中央版本库。当这个中央版本库有问题时,所有工作成员都一起瘫痪直到版本库维修完毕或者新的版本库设立完成。
而 Git可以有无限个版本库。或者,更正确的说法,每一个Git都是一个版本库,区别是它们是否拥有活跃目录(Git Working Tree)。如果主要版本库(例如:置於GitHub的版本库)发生了什麼事,工作成员仍然可以在自己的本地版本库(local repository)提交,等待主要版本库恢复即可。工作成员也可以提交到其他的版本库!
1.2 git基础
Git有三种状态,任何文件可能处于其中之一:已提交(committed)、已修改(modified)和已暂存(staged)。
已提交表示数据已经安全的保存在本地数据库中。
已修改表示修改了文件,但还没保存到数据库中。
已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
由此引入 Git 项目的三个工作区域的概念:Git 仓库、工作目录以及暂存区域。
Git仓库目录是Git用来保存项目的元数据和对象数据库的地方。这是Git中最重要的部分,从其它计算机克隆仓库时,拷贝的就是这里的数据。
工作目录是对项目的某个版本独立提取出来的内容。 这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。
暂存区域是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中。 有时候也被称作`‘索引’',不过一般说法还是叫暂存区域。
基本的 Git 工作流程如下:
1) 在工作目录中修改文件。
2)暂存文件,将文件的快照放入暂存区域。
3) 提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录。
如果 Git 目录中保存着的特定版本文件,就属于已提交状态。 如果作了修改并已放入暂存区域,就属于已暂存状
态。 如果自上次取出后,作了修改但还没有放到暂存区域,就是已修改状态。
2 git环境安装(windows)
2.1 下载Git-2.19.1-64-bit.exe
path:https://git-scm.com/download/win
2.2 在windows上安装git
2.3 创建github账户并配置
博客参考:
http://www.cnblogs.com/schaepher/p/5561193.html
https://blog.csdn.net/qazwsxpcm/article/details/68946736
2.3.1 创建账户
https://github.com/
2.3.2 设置账户
Git与GitHub关联使用:
(1)Git Base 设置
输入
git config --global user.name "你的用户名"
git config --global user.email "你的邮箱"
(2)生成ssh key
输入: ssh-keygen -t rsa -C "你的邮箱"
(3)复制ssh key
方法1: 输入 clip < ~/.ssh/id_rsa.pub 会自动复制ssh key,可以直接粘贴
方法2:在c/Users/Administrator/.ssh/id_rsa)文件找到直接复制
(4)连接github
打开GitHub 进入setting找到ssh key并新建
(5)然后测试连接是否成功
输入: ssh -T git@github.com
3 下载github上源码
找到对应的代码
复制相应的链接
在git bash 中进入对应的本地文件目录,黏贴对应的链接即可完成下载
4 git常用的命令
详细命令见《pro-git》
https://legacy.gitbook.com/book/bingohuang/progit2/details
4.1 local repository 基本命令
$ git help <verb>
$ git <verb> --help
$ man git-<verb>
$ git config 初次运行 Git 前的配置,设置用户名称与邮件地址。 每一个 Git 的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改:
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
如果使用了 --global 选项,那么该命令只需要运行一次,因为之后无论你在该系统上做任何事情, Git 都会使用那些信息。
$ git config --global core.editor emacs 配置git默认使用的编辑器
$ git config --list 列出所有 Git 当时能找到的配置。
$ git clone https://github.com/libgit2/libgit2 克隆现有的仓库
$ git init : 使用 Git 来对现有的项目进行管理,需要进入该项目目录并输入git init
$ git add : 实现对指定文件的跟踪;
$ git commit :提交更新
$ git commit --amend : 修改最后一次提交的内容或注释
$ git status :检查当前文件状态
$ git diff --cached :查看已暂存的将要添加到下次提交里的内容
$ git rm 要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除(确切地说,是从暂存区域移除),然后提交。
如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f(译注:即 force 的首字母)。
$ git rm --cached README 把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中。
$ git mv file_from file_to 移动文件
$ git log 查看提交历史
$ git reset --hard 恢复到HEAD状态
$ git checkout --file 将文件从stage的状态撤销
4.2 remote repository基本命令
$ git remote :列出当前所有的远程仓库
$ git remote -v :列出当前所有的远程仓库
$ git remote add [remote_name] [url] :添加一个新的远程 Git 仓库, 以[remote_name]为仓库名创建远程仓库
$ git fetch [remote-name] 从远程仓库中抓取与拉取 会访问远程仓库,从中拉取所有你还没有的数据。 执行完成后,你将会拥有那个远程仓库中所有分支的引用,可以随时合并或查看。
$ git push [remote-name] [branchname] : [remote-name]服务器或仓库名 [branchname]仓库名
$ git push origin master 要将 master 分支推送到 origin 服务器时
$ git push [remote] [local.branch]:[remnote.branch]将本地仓库中的local.branch推送到远程仓库中的remote.branch中
例:
git push origin test 将本地test分支推送到origin远程仓库
git push origin scott_test:test 将本地scott_test分支推送到origin远程仓库的test分支
$ git remote show [remote-name] 查看某个远程仓库的详细信息
$ git remote rename [old_rep_name] [new_rep_name] 修改一个远程仓库的简写名
$ git remote rm 移除一个远程仓库
$ git tag
$ git branch testing 分支创建
$ git checkout testing 要切换到一个已存在的分支,你需要使用 git checkout 命令
$ git checkout -b iss53 要新建一个分支并同时切换到那个分支上,你可以运行一个带有 -b 参数的 git checkout 命令
$ git merge iss53 分支合并