一、Git命令行操作
首先可以先了解一下Git本地服务器搭建:
①本地操作
1、本地库初始化
git init
#初始化本地库
#注意:.git目录中存放的是本地库相关的子目录和文件,不要删除也不要修改。
2、设置签名
形式:用户名:xxx Email地址:xxx@xxx.com
作用:区分不同开发人员的身份,这里的用户名和email地址与远端库的账号密码没有任何关系
git config user.name xxx
git config user.email xxx@xxx.com
#信息保存位置:./.git/config文件
##项目级别/仓库级别:仅在当前本地库范围内有效
git config --global user.name xxx
git config --global user.email xxx@xxx.com
#信息保存位置:当前系统家目录/.gitconfig文件
##系统用户级别:登陆当前操作系统的用户范围
#优先级就近原则:项目级别优先于系统用户级别
#必须要有两者之一的级别签名,否则不允许
3、添加
将工作区的“新建/修改”添加到暂存区
git add 文件名.后缀名
4、查看状态
查看工作区、暂存区的状态
git status
#绿色是已被add到暂存区,可以继续执行commit,也可以把它从暂存区移除
#红色是没有add到暂存区
###如果是已被commit的文件,然后被修改了,会自动检测到被修改此时也是查看状态红色,需要重新add再commit的操作(或者是直接"git commit -a")。其中add再commit分步的操作中,执行add之后,还可以执行'git reset HEAD 文件名.后缀名'来撤回add操作。
5、提交
将暂存区的内容提交到本地库
git commit -m "注释信息" 文件名.后缀名
6、从暂存区移除
git rm --cached 文件名.后缀名
7、日志查看
多屏显示控制方式:空格向下翻页,按b向上翻页,按q退出
git log
#每个记录全部信息显示
git log --pretty=oneline
#每条记录显示一行且完整哈希值显示
git log --oneline
#每条记录显示一行且七位哈希值显示(只显示当前版本以前的版本)
git reflog
#显示了HEAD版本指针需要移动的次数
# HEAD@{移动到当前版本需要的步数}
8、版本前进后退
reset命令的三个参数对比
–soft:仅仅在本地库移动HEAD指针
| 暂存区 | 工作区 | |
|---|---|---|
| 本地库 |
此时只有本地库后退版本,暂存区与工作区相对没有变,所以git status的话会显示绿色
–mixed:在本地库移动HEAD指针,重置暂存区
| 工作区 | ||
|---|---|---|
| 本地库 | 暂存区 |
此时,本地库和暂存区后退版本,暂存区和工作区有差异,相当于是工作区被修改,所以git status的话会显示红色
–hard:在本地库移动HEAD指针,重置暂存区,重置工作区
| 本地库 | 暂存区 | 工作区 |
- 基于索引值操作[推荐]
git reset --hard 索引哈希值的一部分
#例如:
#git reset --hard a6ace91
- 使用^符号:只能后退
git reset --hard HEAD^
#注:一个^符号表示后退一步,n个^符号表示后退n步
- 使用~符号:只能后退
git reset --hard HEAD~n
#注:表示后退n步
9、删除文件并找回
前提:删除时,文件存在时的状态提交到了本地库
操作:git reset --hard [指针位置]
- 删除操作已经提交到本地库:指针位置指向历史记录
- 删除操作尚未提交到本地库:指针位置使用HEAD
10、比较文件差异
git diff [文件名]
#将工作区中的文件和暂存区进行比较
git diff [本地库中历史版本] [文件名]
#将工作区中的文件和本地库历史记录比较
git diff HEAD
#不带文件名比较工作区中的所有文件
②远程库操作
可以先用下图理理思路:


1、创建本地库使用
使用git init初始化
2、创建远程库
github上面新建远程仓库
3、在本地创建远程库地址别名
git remote add 别名 github上的https下载地址
#在git本地保存一个以后的要使用的远程仓库地址,并且取一个别名
git remote -v
#查看保存的远程地址
4、推送操作
git push 别名 分支名
5、克隆操作
git clone github上的https下载地址
- 完整的把远程库下载到本地
- 创建好之前起好的远程地址别名
- 初始化本地库
6、邀请加入团队
-
在github仓库界面,点Settings,再点Collaborators,然后输入需要邀请的用户的github账号。
-
在被邀请用户中接受邮件,点击相应链接,然后完成邀请。
-
最后被邀请用户就可以通过git push对仓库进行推送操作了。
7、远程库修改的两种拉取方式
- 是fetch和merge操作的合并,所以fetch+merge=pull
方式一:用fetch和merge操作
#1.抓取远程仓库修改的数据到本地分支上(读操作不需要密码),使用过后本地文件并没有变
git fetch 远程地址别名 分支名
#2. 切换分支到远程仓库的分支上,可以查看刚才拉取的数据,可进行相应的检查修改之类的操作
git checkout 远程地址别名/分支名
#3.再切换到本地分支上
git checkout 分支名
#4.将远程分支合并到本地分支上,即本地文件就有了拉取的内容了
git merge 远程地址别名/分支名
方式二:直接使用pull一步到位
git pull 远程地址别名 分支名
8、团队协作开发时冲突的解决
git push 远程地址别名 分支名
#如果远程仓库文件内容和本地文件内容有冲突,执行push之后会报错,需要pull一下
git pull 远程地址别名 分支名
#pull之后进入MERGING(合并中)的状态,进入文件中出现了冲突的表现,需要把特殊符号删除修改之后再进行合并
<<<<<<< HEAD
xxxxxxxx edit by a
=======
xxxxxxxx edit by b
>>>>>>> e85bff69c91a3ba196cb37315e57020d9fd27aec
#然后就和本地分支冲突解决一致
git add 文件名
git commit -m "注释信息" #(注意:不需要加文件名!!)
#再重新push到远程仓库
git push 远程地址别名 分支名
9、跨团队协作fork操作
帮助的人在被帮助人的github上点击fork,然后再帮助人的仓库中有了项目
#1.帮助的人把自己仓库的项目克隆到本地
git clone github上fork后的的https下载地址
#2.本地修改并提交到本地库
git commit -m "注释信息" 文件名
#3.推送到帮助的人的远程仓库中
git push 帮助人的远程地址别名 分支名
#4.帮助人点击pull request,在点new pull request,再点create pull request、
#5.被帮助人再点击pull request,然后审核代码,最后Merge pull request合并代码。
#6.被帮助的人将远程库修改拉取到本地
git pull 被帮助人的远程地址别名 分支名
10、通过ssh免密登陆克隆到本地
一、本地新建一个文件夹
二、添加新的shh密钥
①Checked for existing SSH keys
②Generated a new SSH key and added it to the ssh-agent
-
在本地新建文件夹下打开Git Bash。
-
粘贴以下文本,替换为您的GitHub电子邮件地址。
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -
将SSH私钥添加到ssh-agent。如果您使用其他名称创建密钥,或者要添加具有其他名称的现有密钥,请使用私有密钥文件的名称替换命令中的id_rsa。
$ ssh-add ~/.ssh/id_rsa
③Add the SSH key to your GitHub account.
-
将SSH密钥复制到剪贴板。
如果SSH密钥文件的名称与示例代码的名称不同,请修改文件名以匹配当前设置。复制密钥时,请勿添加任何换行符或空格。
$ clip < ~/.ssh/id_rsa.pub # Copies the contents of the id_rsa.pub file to your clipboard**提示:**如果
clip不起作用,则可以找到隐藏的.ssh文件夹,在您喜欢的文本编辑器中打开文件,然后将其复制到剪贴板。 -
在任何页面的右上角,点击您的个人资料照片,然后点击设置。(In the upper-right corner of any page, click your profile photo, then click Settings.)
-
在用户设置边栏中,点击SSH和GPG密钥。(In the user settings sidebar, click SSH and GPG keys.)
-
单击“ **新建SSH密钥”**或“ 添加SSH密钥”。(Click New SSH key or Add SSH key.)
-
在“标题”字段中,为新密钥添加一个描述性标签。例如,如果您使用的是个人Mac,则可以将此键称为“个人MacBook Air”。(In the “Title” field, add a descriptive label for the new key. For example, if you’re using a personal Mac, you might call this key “Personal MacBook Air”.)
-
将您的密钥粘贴到“密钥”字段中。(Paste your key into the “Key” field.)
-
单击添加SSH密钥。(Click Add SSH key.)
三、在github项目页面上拷贝ssh的链接
git@github.com:rayhomie/webproject.git
四、在本地新建文件夹中使用cmd命令行
git clone git@github.com:rayhomie/webproject.git
二、Git分支管理
下图可以理解分支管理的细节,横轴为时间版本,纵轴为各分支。

①什么是分支管理
在版本控制过程中,使用多条线同时进行推进多个任务。
②分支管理的好处
1、同时推进多个功能的开发,提高开发效率。
2、各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。彼此互相独立。
③分支命令操作
1、创建分支
git branch 分支名
2、查看分支
git branch -v
3、切换分支
git checkout 分支名
4、合并分支
#步骤一:切换到需要被修改的分支(被合并的,可以理解为主线)上
git checkout 分支名1
#步骤二:执行merge命令
git merge 分支名2
#总结:此时就是'分支2'的内容合并到了'分支1'上面
5、解决冲突
冲突的表现:
<<<<<<< HEAD
hhhhhhhhhh edit by hot_fix #当前分支内容
=======
hhhhhhhhhh edit by master #另一分支内容
>>>>>>> master
冲突的解决:
- 第一步:编辑文件,删除特殊符号
- 第二步:把文件修改到满意为止,保存退出
- 第三步:git add 文件名
- 第四步:git commit -m “注释信息”(注:此时commit后面一定不能带具体文件名)
三、Git基本原理
①哈希
是一个系列的加密算法,各个不同的哈希算法虽然加密强度不同,但是有以下几个共同点:
①不管输入数据的数据量有多大,输入同-一个哈 希算法,得到的加密结果长度固定。
②哈希算法确定,输入数据确定,输出数据能够保证不变。
③哈希算法确定,输入数据有变化,输出数据一定有变化, 而且通常变化很大。
④哈希算法不可逆。
Git底层采用的是SHA-1算法。
②Git保存版本的机制


③Git分支管理的本质是创建和移动指针
很大程度提高了开发效率





本文详细介绍了Git的基本操作,包括本地服务器搭建、命令行操作、远程库交互、分支管理和基本原理等,帮助开发者掌握版本控制技巧。
1658

被折叠的 条评论
为什么被折叠?



