Git

原创
02/24 23:36
阅读数 25

版本管理

  • SVN 采用的是增量式管理的方式,而 Git 采取了文件系统快照的方式
  • 集中式的方式是所有的文件都存储在服务器中,如果服务器损坏则所有的历史版本数据都丢失,在客户端只是保存的当前状态的数据
  • 分布式的方式可以在本地存储有所有的历史版本数据

Git

Git官网地址:https://git-scm.com/

Git在帮我们去管理各个版本的时候,是通过一个指针,指针有一个名字叫HEAD,取名字是为了方便我们来引用,来控制历史版本的前进后退

Git结构

设置签名

这里的名称和邮箱只是用来标识操作Git人的身份,没有其他作用

项目级别签名优先于系统级别签名,二者都有时采用项目级别的签名

#仓库级别的签名,信息保存在当前仓库的.git/config 文件
git config user.name[名称]
git config user.email [邮箱]

#系统级别的签名,信息保存在当前用户的家目录.gitconfig 文件
git config --global user.name [名称]
git config --global [邮箱]

Git基本命令

#本地库初始化
git init

#查看工作区、暂存区状态
git status

#将工作区的“新建/修改”添加到暂存区
git add [file name]

#将暂存区的内容提交到本地库
git commit -m "commit message" [file name]

#查看某命令的帮助文档
git help [命令] 

查看日志命令

#查看日志(最详细),多屏显示控制方式:空格向下翻页,b 向上翻页, q 退出
git log

#日志一行展示
git log --pretty=oneline

#一行展示并且显示短hash值,只显示当前版本及以前的历史版本,当前版本后面提交的历史版本不显示
git log --oneline

#显示HEAD移动的步数,会显示所有的历史记录
git reflog

前进后退 

#将当前版本设置到对应索引值版本
git reset --hard [局部索引值]

#表示后退一个版本,使用^符号:只能后退
git reset --hard HEAD^
#一个^表示后退一步,n 个表示后退 n 步
git reset --hard HEAD~n

#查看当前指针所在位置,并将本地版本指定到当前指针版本
git reset --hard HEAD 

reset命令中的--hard有三个值,以下是三个值的对比

#仅仅在本地库移动 HEAD 指针
--soft 参数

#在本地库移动 HEAD 指针,重置暂存区
--mixed 参数

#在本地库移动 HEAD 指针,重置暂存区,重置工作区
--hard 参数

比较文件差异

#将工作区中的文件和暂存区进行比较
git diff [文件名]

#将工作区中的文件和本地库历史记录比较
git diff [历史版本hash值] [文件名]

#不带文件名比较多个文件

分支

#创建分支
git branch [分支名]

#查看分支
git branch -v

#切换分支
git checkout [分支名]

#合并分支
git merge [被合并分支名]

冲突

当出现冲突时,在分支后会显示merging状态

推送、拉取、远程库地址别名

#查看当前所有远程地址的别名 
git remote -v 

#添加别名:为远程地址设置别名
git remote add [别名] [远程地址]

#完整的把远程库下载到本地,并创建 origin 远程地址别名,初始化本地库
git clone [远程地址]

#推送:将本地分支推送到远程分支
git push [本地分支别名] [远程分支名]

#从远程库拉取到本地
git fetch [远程库地址别名] [远程分支名]

#代码合并
git merge [远程库地址别名/远程分支名]
#切换到fetch后的缓存分支
git checkout origin/master
#将该分支的内容合并到当前所在的分支
git merge origin/master

#拉取,pull=fetch+merge
git pull [远程库地址别名] [远程分支名]

配置忽略文件

GitHub 官网样例文件:https://github.com/github/gitignore/blob/master/Java.gitignore

下载以上的样例文件并添加自己的忽略文件配置(文件名可以随意更改)

在~/.gitconfig 文件中引入上述文件

[core]
excludesfile = C:/Users/Lenovo/Java.gitignore

GitFlow工作流

问题

1、当本地项目名与远程的项目名不一致时,首次拉取时合并会有异常

解决:使用以下命令

git pull origin master --allow-unrelated-histories

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部