注:git常用命令流程图
1.安装git:Git - Downloads
2.安装TortoiseGit:Download – TortoiseGit – Windows Shell Interface to Git
3.使用git管理文件版本(本地仓库)
版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。由于git是分布式版本管理工具,所以git在不需要联网的情况下也具有完整的版本管理能力。
-使用gitbash
git bash here
git init
-使用TortoiseGit
Git在这里创建版本库,版本库创建成功,会在此目录下创建一个.git的隐藏目录。
版本库:“.git”目录就是版本库,将来文件都需要保存到版本库中。
工作目录:包含“.git”目录的目录,也就是.git目录的上一级目录就是工作目录。只有工作目录中的文件才能保存到版本库中。
Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念。
什么是工作区(Working Directory)?
工作区就是你在电脑里能看到的目录,比如我的 新建文件夹(2) 文件夹就是一个工作区。
有的同学可能会说新建文件夹(2)不是版本库吗怎么是工作区了?其实新建文件夹(2)目录是工作区,在这个目录中的“.git”隐藏文件夹才是版本库。这回概念清晰了吧。
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
如下图所示:
分支和HEAD的概念我们稍后再讲。前面讲了我们把文件往Git版本库里添加的时候,是分两步执行的:
第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。
你可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。
添加文件,修改文件,删除文件
4.远程仓库
在本地创建了Git仓库,又想让其他人来协作开发,此时就可以把本地仓库同步到远程仓库,同时还增加了本地仓库的一个备份。
常用的远程仓库就是github:GitHub: Where the world builds software · GitHub,
码云
https方式同步远程仓库
对于新创建的远程仓库(还没有分支的)可以直接通过https地址将本地仓库内容直接推送过去, 找到本地仓库目录, 鼠标右键选择: git 同步
ssh协议
SSH是英文Secure Shell的简写形式。通过使用SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗。使用SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTP、Pop、甚至为PPP提供一个安全的"通道
1)ssh密钥生成
Git Bash.exe
git bash 执行命令,生命公钥和私钥
命令: ssh-keygen -t rsa
执行命令完成后,在window本地用户.ssh目录
C:\Users\用户名\.ssh下面生成如下名称的公钥和私钥:
2)ssh密钥配置
github->seting->SSH和GPG密钥->新的SSH密钥-》填写本地的公钥
- 使用TortoiseGit同步
由于TortoiseGit使用的ssh工具是“PuTTY”git Bash使用的ssh工具是“openSSH”,如果想让TortoiseGit也使用刚才生成的密钥可以做如下配置:TortoiseGit-》设置-》网络:
将C:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe
改为 C:\Program Files\Git\usr\bin\ssh.exe
复制github仓库中SSH地址,Git同步
从远程库克隆
克隆远程仓库也就是从远程把仓库复制一份到本地,克隆后会创建一个新的本地仓库。
1)git
git clone git@github.com:subwen/mytest.git
git clone https://github.com/subwen/mytest.git
2)TortoiseGit
Git克隆
Git中从远程的分支获取最新的版本到本地有这样2个命令:
- git fetch:相当于是从远程获取最新版本到本地,不会自动merge(合并代码)
- git pull:相当于是从远程获取最新版本并merge到本地
上述命令其实相当于git fetch 和 git merge
在实际使用中,git fetch更安全一些
因为在merge前,我们可以查看更新情况,然后再决定是否合并
如果使用TortoiseGit的话可以从右键菜单中点击“拉取”(pull)或者“获取”(fetch)
5.分支管理
1)git创建分支
2)tortoiseGit创建分支