Git和SVN区别
- Git是分布式的,SVN不是;这是Git 和其它非分布式的版本控制系统,例如SVN,CVS等,最核心的区别
- Git把内容按元数据方式存储,而SVN是按文件;所以的资源控制系统都是把文件的元信息隐藏在一个.svn,.cvs等的文件夹里
- Git没有一个全局的版本号,而SVN有
- Git的内容完整性要优于SVN;Git的内容存储使用的是SHA-1哈希算法,这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏
Git工作流程
- 从远程仓库中克隆Git资源作为本地仓库
- 从本地仓库中checkout代码然后进行代码修改
- 在提交前先将代码提交到缓存区
- 提交修改,提交到本地仓库。本地仓库中保存修改的各个历史版本
- 在修改完成后,需要和团队成员共享代码时,可以将代码push到远程仓库
安装过程
安装问题1
use git from bash only
不会对环境变量有任何的修改,只能在bash里面去使用git操作,这是最安全的一种(最好选这种)
git from the command line and also from 3rd-party software
在命令行中也能使用git操作,会对path变量有修改
use Git and optional Unix tools from the command prompt
会覆盖find 和sort等修改,会对环境变量有覆盖性的修改
安装问题2
Use the native Windows Secure Channel library
用windows本地的安全渠道去连接,会有一定的局限性
Use the OpenSSL library
OpenSSL是一种更加通用的,所以选这个
安装问题3
行末换行符转换方式
如何去兼容windows的风格和Unix风格(换行符)
Checkout windows-style,commit Unix-style line endings
把LF转换为CRLF当文本换行时,提交或者检查的时候做转换(这种风格足够使用)
安装问题4
使用git命令的默认终端
use MinTTY(the default termminal of MSYS2)
git里面用的是linux里面命令,不要和windows窗口去混用,保持默认即可
use Windows’s default console window
使用windows 的cmd窗口
安装问题5
保持默认即可
安装成功
本地数据库
本地库初始化
命令
git init
效果
.git目录中存放的是本地库相关的子目录和文件,不要删除,也不要胡乱修改
注册表添加
添加之前最好进行注册表导出操作(那样会有回旋的余地)
win + r ,regedit.exe,打开注册表 按照文件的层次关系依次找到
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer
新建一个字符串,然后重命名为Max Cached Icons
(最大缓存图标),而且进行值设置为2000
图标覆盖—>默认
最后一步就是系统重新启动
修改成功标志
添加文件
tortoise添加文件
点击Add后
然后点击commit
在Message
中写入标志性提示语句,然后点击commit
此时两个文件都有了成功表示
注意
此时这个提交是从工作目录—>暂存区,此时并未到本地仓库(因为还未创建)
git命令添加文件
git add命令可将该文件添加到暂存区。(添加一个文件或者多个文件到暂存区)
git add bb.txt
这个操作的话也就是鼠标右键的add
git commit bb.txt
这里也就是填写那个Message,然后这个的输入方式的话跟linux中的vim操作方式一样
第一步时用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。因为我们创建Git版本库时,Git自动为我们创建了唯一的一个master分支,所有,现在,git commit 就是往master分支上提交更改。
查看仓库当前的状态
git status
git status -s
修改文件
提交修改
如果不想通过vim中去输入message的话,那么直接加-m参数或者-message参数
git commit -m two cc.txt
查看修改历史
tortoise查看修改历史
点击 Show log
依次查看每个版本的差异
使用git命令查看修改历史(git log)
git log cc.txt
git log --oneline
git log --reverse
这个和git log顺序反着的,代表逆向
差异比较
tortoise差异比较
这里不要选中文件,直接空白处,点击鼠标右键
Diff,代表比较差异,different(盲猜)
然后点过之后呢,再来选中文件
选择Diff
命令进行差异比较(Git diff)
git diff cc.txt
删除文件
tortoise删除文件
命令进行删除文件(git rm)
git rm aa.txt
重命名文件
tortoise重命名文件
命令进行删除文件(git mv)
git mv sss.txt ss.txt
远程数据库
SSH秘钥生成
ssh-keygen -t rsa
默认地址:/c/Users/ASUS/.ssh/id_rsa.pub
,里面有公钥和私钥,只需要把公钥放在github的
进行new添加
成功标志
使用git命令同步到远程仓库
git remote add origin git@github.com:123zhang123456/test.git
123zhang123456
是用户名,test
是仓库名,而origin
是后面这远程仓库的别名
然后就可以往远程仓库推送相应的版本号:
git push -u origin master
成功标志
点击这个Compare & pull request
使用tortoise同步到远程仓库
修改Remote
修改Network
提交过程
首先add
,然后commit
提交到本地仓库
然后空白处点击鼠标右键
选择同步
一个push,一个pull,点击push后,即可把本地仓库的文件推进远程仓库
成功标志
clone远程仓库
使用git命令来clone远程仓库
git clone git@github.com:123zhang123456/test.git
使用tortoise来clone远程仓库
从远程仓库取代码
Git中从远程的分支获取最新的版本到本地有这样两个命令:
- git fetch:相当于是从远程获取最新版本到本地,不会自动merge(合并代码)
- git pull:相当于是从远程获取最新版本并merge到本地
上述命令其实相当于git fetch 和git merge,在实际使用中,git fetch更安全一些,因为在merge前,我们可以查看更新情况,然后再决定是否合并。如果使用TortoiseGit的话可以从右键菜单中点击“拉取”(pull)或者“获取”(fetch)