一.Git 命令行操作
1. 本地库初始化
- 命令: git init (切换到目录>右键 Git Bash Here>用 liunx 命令到对应目录下>初始化)
- 效果:会在当前目录下生成 .git 目录(隐藏的,解决办法:到当前文件夹→查看→显示和隐藏→勾选隐藏的项目)
- 作用:初始化后,在当前目录下会出现一个 .git 目录,Git 需要的数据和资源都存放在这个目录中
- 注意点: .git 目录中存放的是本地库相关的子目录和文件,不要删除,也不要随便修改
2.初始化配置
-
形式:
- 用户名:Tom
- Email地址: kjijd@qq.com
-
作用:
- 区分开发人员的身份
-
设置用户名和Email
- 项目级别/仓库级别:仅在当前本地库范围有效:
git config user.name tom_pro
git config user.email kjijd@qq.com
2. 系统用户级别:登录当前操作系统的用户范围:
git config --global user.name "damu"
git config --global user.email damu@example.com
-
要检查已有的配置信息,可以使用 git config --list 命令
-
删除配置信息 git config --global --unset user.email
-
级别优先级:
- 就近原则:项目级别优先于系统用户级别,二者都有时采用项目级别的签名
- 如果只有系统用户级别的签名,就以系统用户级别的签名为准
- 二者都没有不允许
-
注意点:
- 这里的用户名和Email和登录远程库(代码托管中心)账号和密码没有关系 ,
- 配置工作只需一次,以后升级时还会沿用现在的配置。当然,如果需要,你随时可以用相同的命令修改已有的配置
3.基本操作(查看状态,提交暂存区和本地库.历史查看)
- 状态查看
git status
1.代表是那个分区的 2.是否提交 3.有没有可提交的文件和提示
查看工作区、暂存区状态 - 添加/撤回>暂存区 (已经add的文件,修改后可以直接commit)
git add 文件名 提交到暂存区
将工作区的“新建/修改”添加到暂存区
git rm --cached 文件名 从暂存区撤回 - 提交(这里和安装是选择vim编辑器有关)
修改后 1 查看提示(git status 命令) modified: file.txt
git commit 文件名 需要输入提交信息日志>写完wq(下面不需要进入vim)
git commit -m “commit message” 文件名 将暂存区的内容提交到本地库
git restore 文件名 撤销某个文件修改的操作
git reset HEAD 文件名 可以把暂存区的修改撤销掉(unstage),重新放回工作区 - 查看历史记录
- git log 查看版本记录
多屏显示控制方式:空格向下翻页 ,b 向上翻页 ,q 退出(超过了自动多屏) - git log --pretty=oneline 每个历史只显示一行(hash值和日志)
- git log --oneline 每个历史只显示一行且显示hash的部分值
- git reflog 显示历史只显示一行,并且显示指针(要移动到版本多少步)
HEAD@{移动到当前版本需要多少步}
-
前进后退(三种方式)
本质:指针移动
- 基于索引值操作[推荐]
git reset --hard [局部索引值]
例如: git reset --hard a6ace91 - 使用 ^ 符号:只能后退
git reset --hard HEAD^^
注:一个 ^ 表示后退一步,n 个 ^ 表示后退 n 步 - 使用 ~ 符号:只能后退
git reset --hard HEAD~n 注:表示后退 n 步
例如: git reset --hard HEAD~3 表示后退3步
- 基于索引值操作[推荐]
-
删除文件并找回
-
前提:删除前,文件存在时的状态提交到了本地库.
-
步骤:进入文件目录>rm 文件名(rm file666.txt)删除本地文件>然后提交到暂存区git add file666.txt >然后提交到本地仓库git commit -m ”delete file666” file666.txt (删除完成)
-
找回操作:git reset --hard [指针位置] 例如:git reset --hard e31cfb5
-
删除操作已经提交到本地库:指针位置指向历史记录(回到之前未删除版本)
-
删除操作尚未提交到本地库:指针位置使用 HEAD(git reset --hard HEAD)
-
-
reset 命令的三个参数对比
- –hard 参数
在本地库移动 HEAD 指针
重置暂存区 重置工作区 - –soft 参数
仅仅在本地库移动 HEAD 指针 (查看状态时,绿色提示,本地库和暂存区不同步) - –mixed
参数 在本地库移动 HEAD 指针 重置暂存区
- –hard 参数
-
比较文件差异
-
将工作区中的文件和暂存区进行比较
git diff 文件名
步骤:vim file.txt(创建file.txt) > git add file.txt(把file.txt添加到暂存区) > vim file.txt (修改file.txt内容) > git diff file.txt (工作区和暂存区比较)
-
将工作区中的文件和本地库历史记录比较
git diff [本地库中历史版本] [文件名]
步骤:git commit -m “my file” file.txt (把file.txt提交到本地库) > vim file.txt (修改file.txt内容) > git diff HEAD file.txt (用HEAD比较)
例如: git diff HEAD file.txt 可以用HEAD或者版本索引值
-
4. 分支管理
- 什么是分支?
在版本控制系统中,使用多条线同时推进多个任务 - 分支本质
Git的分支,其实本质上仅仅是指向提交对象的可变指针.Git 的默认分支名字是 master
注意点: Git 的 “master” 分支并不是一个特殊分支。 它就跟其它分支完全没有区别。 之所以几乎每一个仓库都有 master 分支,是因为 git init 命令默认创建它,并且大多数人都懒得去改动它。 - 分支的好处?
可以同时推进多个功能的开发,提高开发效率
各个分支在开发的过程中,如果某一个分支开发失败,不会影响其它的分支
失败的分支删除重新开始即可 - 分支操作
- 创建分支
git branch [分支名]
例如: git branch hot_fix
**注意点:**创建 一个新分支,并不会自动切换到新分支中去 - 查看分支
git branch -v 可以查看每一个分支的最后一次提交
- 切换分支
git checkout [分支名]
例如:git checkout hot_fix
- 合并分支
命令:git merge [有新内容分支名]
第一步: 切换到接受修改的分支(被合并,增加新内容)上
git checkout [被合并分支名 master] /* 切换分支
第二步: 执行 merge 命令 (合并分支指令)
git merge [有新内容分支名] - 删除分支
git branch -d [分支名] 如果报错,就是没合并过
git branch -D 分支名 是强制删除一个分支 - 解决冲突
- 冲突原因:两个分支,修改同一分支,同一位置,修改内容不一样时
- 冲突的地方:打开冲突文件,冲突部分是以 <<<<<<<<<< ============= >>>>>>>>>>标识,将此部分代码进行处理
- 冲突的表现:
冲突的解决:- 第一步:编辑文件,删除特殊符号
- 第二步:把文件修改到满意的程度,保存退出
- 第三步:git add [文件名]
- 第四步:git commit -m “日志信息”
注意:此时 commit 一定不能带具体文件名
- 创建分支
二. GitHub
1. 账号信息
GitHub 首页就是注册页面: https://github.com/
当我们进入官网后会出现登陆的界面,如果你已经有账号了则直接点击sign in 去登陆就可以了,如果是当你第一次使用还没有账号的情况,点击进行注册.
Email 地址:atguigu2018ybuq@alin.com
GitHub 账号:atguigu2018ybuq
2.创建远程库
3. 创建远程库地址别名
通过本地库提交到远程库
git remote add [别名origin] [远程地址]
git remote -v 查看当前所有远程地址别名
4. 推送
git push [别名 origin] [分支名]
例如:git push origin master /*回车可能需要等待一会会,弹出对话框>输入用户和密码)
5. 克隆 (从远程库拉取到本地库)
命令: git clone [远程地址]
成功:
克隆效果(过程):
完整的把远程库下载到本地
创建 origin 远程地址别名 (git remote -v查看远程库别名)
初始化本地库(就是:git init)
6. 团队成员邀请(邀请用户才能提交)
“岳不群”其他方式把邀请链接发送给“令狐冲”,“令狐冲”登录自己的 GitHub 账号,访问邀请链接。
点击接受 >然后在执行推送
:推送了第一次在此推送不要输入用户名:git 本身不具备记录功能,Windows中凭据管理器记录用户名和密码
控制面板\所有控制面板项\凭据管理器(如果想切换用户:删除记录)
提交后>>然后推送 git push origin master
7. 拉取
git fetch [远程库地址别名origin] [远程分支名master] /*抓取下来
git checkout origin/master /*切换到链接地址(别名)的master(可查看抓取下来内容
切换回 git checkout master
git merge [远程库地址别名origin/master远程分支名] /*合并
git pull [远程库地址别名] [远程分支名] /*等于上面步骤
8. 解决冲突
要点:
如果不是基于 GitHub 远程库的最新版所做的修改,不能推送,必须先拉取。
拉取下来后如果进入冲突状态,则按照上面“分支冲突解决”操作解决即可
总结:
以上就是对git的总结,包括对基本操作(查看状态,提交暂存区和本地库.历史查看,还有对分支的管理,和如果分支发生冲突怎么解决,在GitHub上创建远程库,对远程库修改的拉取,推送操作
要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。