20221106
设置用户签名
git config --global user.name = 用户名
git config --global user.email = 邮箱 // 虚拟邮箱即可 不会校验真假
用户签名的作用是区分不同的操作者,它会显示在每一个版本的提交信息中,以此来确认本次提交是哪个做的。
首次安装Git,必须设置用户签名,否则无法提交代码。
这里的用户签名完全只为了显示是who提交的,跟其他远程仓库账户无关
cat ~/.gitconfig
[user]
name = xxx
email = xxx
在C:\Users\admin(当前window用户目录)\.gitconfig中可以查看设置的用户签名
git init
git init
初始化本地库
// 默认创建.git的隐藏文件夹 windows下
git status
git status
On branch master // 显示当前分支
Your branch is up to date with 'origin/main'. // 有过远程推送则显示远程推送
// 存在修改文件没提交本地库的
Changes not staged for commit:
// 新创建文件,未跟踪的
Untracked files:
git add
git add 文件路径/文件名
git add . // 添加所有到暂存区
git restore --staged
git restore --staged 文件路径/文件名
将已提交至暂存区的文件,退回到工作区
git commit -m “本次提交说明”
git commit -m "本次提交说明"
git reflog | git log
git reflog
简易查看提交历史
按时间倒叙展示
7位版本号 commit 内容
...
// 说明一点 显示的(HEAD -> main) HEAD@{0}:commit: 最新的一次提交说明
// 当前版本指向HEAD{0}
git log
详细查看提交历史
按时间倒叙展示
commit 完整版本号
Author: 配置的用户签名 name & email
Date: 提交时间
提交内容说明
git reset --hard 版本号
该命令用于作版本穿梭,假如我们commit了三次,即git reflog下大致显示
2342344 (HEAD -> master) HEAD@{0}: commit: 第三次提交 // 最新版本位置
e34d332 HEAD@{1}: commit: 第二次提交
fg34232 HEAD@{2}: commit: 第一次提交
回到第二次提交时
git reset --hard e34d332
2342344 HEAD@{0}: commit: 第三次提交
e34d332 (HEAD -> master) HEAD@{1}: commit: 第二次提交 // 最新版本位置
fg34232 HEAD@{2}: commit: 第一次提交
回到第一次提交时
git reset --hard fg34232
2342344 HEAD@{0}: commit: 第三次提交
e34d332 HEAD@{1}: commit: 第二次提交
fg34232 (HEAD -> master)HEAD@{2}: commit: 第一次提交 // 最新版本位置
底层就是移动了(HEAD -> 当前分支)这一整体指针指向的提交版本
分支
// 查看当前分支
git branch -v
git branch
// 创建分支
git branch feature-xxx
// 切换分支
git checkout feature-xxx
// 合并分支
git merge 要合并到当前分支的分支名
// 分支冲突
合并分支时,两个分支在【同一个文件的同一个位置】有两套完全不同的修改,Git无法判断究竟使用哪一个因此需要人为手动决定
<<<<< HEAD
// 这整体是当前分支内容
==========
// 这整体是合并分支内容
>>>>> feature-xxx
- 撤销修改
(撤销修改中分几种情况:1.文件在工作区作修改撤销 2.文件add到缓存区后作修改撤销 不论在哪个阶段 执行命令后 都将回退到git commit 或 git add 或 工作区之前的状态)
$ git checkout --file文件
- 撤销修改2
(将缓存区的文件回退至工作区)
$ git reset HEAD file文件 其中git reset有回退版本的意思 还有将缓存区的文件退回至工作区 其中HEAD表示当前文件 具体跟版本回退差不多
- 删除文件
$ git rm file文件名
(当在工作区删除了文件时 想要恢复 即可用使用$ git checkout --file文件名 则它会从版本库中复制一份到工作区来;当在版本库中执行了删除文件时此时需要再次执行一次commit)
- 在github上创建仓库并且关联到本地库
(登录到你的github并且创建个仓库 名字取与本地库名字一致)
在你的本地库文件目录下运行git bash并键入下面的命令行进行关联
$ git remote add origin git@github.com:Cristop3/RowanIT3.git
(其中默认的远程库名称为origin,第一次进行关联后使用- u 将本地版本库中所有文件提交到github进行托管)
$ git push -u origin master
(其中 origin表示远程库名;master表示在远程库下的主分支文件均提交至该分支下面)
(到此以后你在本地版本库中修改的文件均可以通过$ git push origin master提交至在github远程库中)
(简单的查看远程库情况)
- 在远程库上克隆项目
$ git clone <github url地址>
- 分支
(创建一个新的分支 其中- b 的意思是创建一个新分支并切换至该分支下进行操作)
$ git checkout -b 分支名
(查看当前库下的分支情况 其中有个*号的表示当前正在该分支下面)
(合并分支 当进行团队开发时一般不在master分支上进行开发 都是在主分支下进行创建新的分支 最后进行分支合并)
$ git merge 分支名
(删除分支 在进行合并后可以执行该命令把分支删除)
$ git branch -d 分支名
(切换分支 执行命令进行分支间的切换)
$ git checkout 分支名
- 冲突问题
(当多人开发时 可能存在你修改提交 他人修改提交 这样就会产生冲突 在对应的文件中会产生异样提示在某些地方进行了冲突 标记了不同分支的内容 在进行修改后提交)
(也可以查看分支冲突解决详情)
- 获取最新
(为了避免冲突 我们可以先获取到最新再进行修改提交操作)
$ git pull
到此Git的基本知识也算是说完了 不过总体是参考廖雪峰老师的博文来写的 其实还有更多更强大的功能等我们去研究 做技术的就是要不停的学习研究 我相信我能成为大神 哦 对了 我有新博客了是基于Hexo+Github Page搭建的 还在进行试验中 有兴趣来瞧瞧 共同学习 加油…
Cristop3.github.io