Git的基本使用
Git的基本使用
概述
- Git 是一个开源的分布式版本控制系统,用于敏捷高效地管理任何或小或大的项目。
Git和SVN的区别
- Git 是分布式的,SVN 不是:这是两者最核心的区别。
- Git 把内容按元数据方式存储,而 SVN将文件的元信息按文件存储在.svn文件夹里。
- Git 分支和 SVN 的分支不同:SVN 中的分支实质是版本库中的另外一个目录。
- Git 没有一个全局的版本号,而 SVN 有:这是与SVN 相比 ,Git 缺少的最大的一个特征。
- Git 的内容完整性优于 SVN:Git 的内容存储使用SHA-1 哈希算法,这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
GIt的产生背景
- 1991年Linux诞生,Linux 内核开源社区提交的补丁只能由Linus本人手动进行合并
- 2002年BitMover公司出于人道主义精神,授权Linux 内核社区使用分布式版本控制系统 BitKeeper 管理和维护代码,但要求不能破解;Linux 内核社区无法像商业公司那样对参与开发者进行强有力地约束,开发Samba的Andrew试图破解BitKeeper,但被BitMover发现。
- 2005年开发 BitKeeper 的商业公司结束同 Linux 内核开源社区的合作关系,并收回 Linux 内核社区免费使用 BitKeeper 的权力;Linus使用C语言开发了一个分布式版本控制系统Git:主题程序开发只用了两周,一个月后Linux 内核开源项目由Git管理。
- 2008年GitHub上线。
Git工作结构图

说明:
- workspace:表示工作区
- staging area:表示暂存区/缓存区
- local repository:本地仓库
- remote repository:远程仓库
Git基本设置
Git初始化
git status:查看仓库状态,显示有变更的文件git init:初始化仓库- 创建一个workspcae文件夹,并进入文件夹,右键Git Bash Here
- 输入
git status查看当前状态,会提示不是一个git 仓库 - 输入
git init初始化Git仓库,结果如下图所示:
No commits yet:表明本地仓库没有可向远程仓库提交的文件.nothing to commits (create/copy files and use "git add" to track): 表明暂存区没有可向本地仓库提交的文件
Git提交到本地仓库
git add [dir] [file1][file2]...:将指定目录及其字母目录或者n个文件添加到暂存区- 创建一个test.txt文件,然后
git add test.txt,即可添加文件到暂存区
- 创建一个test.txt文件,然后
git commit:提交文件到本地仓库,但在commit之前必须先设置提交用户信息才可添加到本地仓库- 设置用户名和邮箱
git config --global user.name YourName:此用户名对应git网站注册时使用的用户名git config --global user.email YourEmail:同理,对应提交邮箱git commit --global命令设置的用户名和密码存储在C://Users/用户名/.gitconfig中- 去掉global参数则只对当前仓库有效
git commit -m '提交的信息' test.txt:提交到本地仓库![image]()
Git推送到服务器相关问题
- 创建本地仓库别名:
git remote add [shortname] [url]![image]()
git push [alias] [branch]:将本地仓库推送到远程仓库
注意:以上对于远程仓库的操作是对空的git仓库的操作,如果远程操作不为空,解决办法在下面
git clone
git clone <repo> [directory]:clone 会下载远程仓库所有内容,包括git目录,因此clone的项目无需再init.
- clone指令执行后将创建名为origin的远程仓库地址别名;如果已经创建别名,则会修改为origin
git pull
git pull <repo>:用于将远程仓库拉取到本地,拉取之前必须先创建并初始化本地仓库.
Git本地与远程仓库的连接合并
无本地仓库连接Git远程仓库
如果你的本地尚未创建Git仓库,可以直接使用git clone,这样就会直接把远程仓库克隆下来,包括git信息,以及仓库源也会被修改为origin
已创建Git仓库
有两种情况,一种是刚初始化本地仓库,尚未提交文件到本地仓库;另一种是已经提交
空本地仓库连接Git远程仓库
如果只是初始化本地仓库,未作其他修改,可以直接git pull origin master,拉取远程仓库之后就可以向上push.此过程不会设置仓库源,需要手动添加
非空本地仓库连接Git远程仓库
远程和本地是两个独立的仓库,如果直接pull,则会报错fatal: refusing to merge unrelated histories,指拒绝合并不相关的历史,此时如若仍要合并,解决办法为在pull命令后追加--allow-unrelated-history,意思是合并两个仓库的历史,然后就可以进行push操作了.



浙公网安备 33010602011771号