You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
130 lines
5.0 KiB
130 lines
5.0 KiB
第二天:git学习部分(笔记+博客园git学习+GeekHour视频第七个到最后)
|
|
|
|
一、git常见指令补充
|
|
(0)快速打开新的终端
|
|
(1) git reset 回退版本
|
|
三种模式:
|
|
git reset --soft 某一个版本 保留工作区和暂存区的所有内容
|
|
|
|
git reset --hard 某一个版本 丢弃工作区和暂存区的所有内容
|
|
|
|
git reset --mixed 某一个版本 保留工作区的所有内容,丢弃暂存区的内容
|
|
|
|
这里实验,分别提交三次,用git log --oneline查看提交历史(三次提交及版本号)
|
|
这时,使用cp -rf repo repo-soft可把仓库命令复制,同理hard和mixed三份
|
|
|
|
git ls-files 查看暂存区的内容
|
|
|
|
hard模式里,可以用git reset --hard HEAD~ 表示回退上一个版本 别的也可以
|
|
mix模式回退后需要再add一下 soft不用
|
|
|
|
git reflog命令查看操作历史记录
|
|
|
|
(2)补充基本命令
|
|
-命令行指令ls, 列出目录(文件夹)下文件, ls for list
|
|
-l, 以每行一个的格式列出文件, l for long
|
|
-a, 列出包含隐藏文件的所有文件, a for all
|
|
-S, 以文件大小顺序列出文件, S for Size
|
|
-t, 以修改日期顺序列出文件, t for time modified
|
|
-r, 以倒序列出文件,r for reverse
|
|
参数可以叠加,ls-ltr就是每行一条以文件修改日期倒序排列列出文件
|
|
-命令行指令mkdir, 新建目录(文件夹), Make Directory
|
|
-命令行指令cd, 切换目录(文件夹), Change Directory
|
|
cd ~ 跳到自己的home目录(文件夹)
|
|
cd../.. 跳到目前目录的上上两层
|
|
|
|
|
|
|
|
(3)git diff 查看差异 (一般是用图形化工具)
|
|
<1>(工作区和暂存区之间差异)
|
|
使用vi修改文件后 git diff 文件名
|
|
这里显示index 文件内容哈希值 权限值
|
|
红色是删除内容 绿色是添加的内容
|
|
<2>工作区与版本库之间
|
|
git diff HEAD
|
|
<3>暂存区和版本库之间差异(commit 后为空)
|
|
git diff --cached
|
|
<4> git diff 版本号1 版本号2 比较两个版本差异内容
|
|
git diff HEAD~ HEAD 上一个版本和最新版本 Head~2 head之间的第两个版本.....
|
|
可以后面加上文件名,只查看指定文件的差异
|
|
|
|
!!!!!!!!!!!!Head指向分支的最新提交节点,很重要!!!!!!!!!!!!!!
|
|
二、git rm 删除文件
|
|
-命令行指令rm 用于删除文件、目录, rm for remove
|
|
-i 删除前提示, y删除, n不删除
|
|
-r 删除一个目录(含所有文件), r for repository -r*包括子目录
|
|
-f 强制执行删除操作, f for force
|
|
参数可叠加, 如rm -rf 【dir】,直接删除目录
|
|
|
|
rm file 删除后要add一下,把暂存区也删一下
|
|
但是git rm <file> 直接删掉工作区和暂存区的内容
|
|
git rm --cached <file> 只删除暂存区
|
|
|
|
三、.gitignore忽略文件
|
|
自动生成 临时 机密...
|
|
echo "access.log" > access.log
|
|
echo access.log > .gitignore 添加到忽略文件
|
|
*.log表示忽略全部日志,但是.gitignore创建,1.log已经在版本库中了,就不行
|
|
temp/表示忽略temp文件夹
|
|
|
|
四、远程仓库管理代码 比如gitee,gitea,github,gitlab
|
|
这里提交笔记用的是gitea
|
|
git clone http:.. 将远程仓库克隆到本地仓库
|
|
|
|
添加远程仓库:git remote add <远程仓库别名><远程仓库地址> git push -u <远程仓库名><分支名>
|
|
|
|
查看远程仓库: git remote -v
|
|
|
|
git pull 把远程仓库的修改拉取到本地仓库,自动合并,如果不一致就冲突 //git fetch只获取远程仓库的修改 并不会合并 需要手动合并
|
|
( git pull <远程仓库名><远程分支名>:<本地分支名> )
|
|
|
|
git push 把本地仓库的修改推送给远程仓库
|
|
|
|
四、GUI工具
|
|
github-desktop SourceTree 小乌龟 GitKraken
|
|
vscode新建终端:ctrl+shift+`
|
|
|
|
五、分支Branch!!!!!
|
|
(1)get branch 到默认的mian分支
|
|
之后配合SourceTree使用,打开克隆过的/init过的本地文件夹
|
|
|
|
(2)创建:get branch dev创建新的分支dev
|
|
|
|
(3)切换:get checkout dev切换到dev分支上 注意git checkout命令可恢复到我们修改之前的状态,避免歧义
|
|
(4)git switch dev 更好用!!只切换分支
|
|
|
|
(5)合并:git merge合并分支
|
|
git log --graph --oneline 查看分支图
|
|
|
|
(6)删除:
|
|
删已经合并的:git branch -d dev
|
|
删没有合并的:git branch -D dev
|
|
|
|
(7)解决合并冲突:
|
|
冲突后,进入main或其中分支修改冲突文件,把冲突的杠等去掉,合并冲突内容
|
|
添加暂存区 git add file
|
|
提交修改 git commit -m "message"
|
|
终止合并:get merge --abort
|
|
|
|
六、回退和rebase
|
|
执行merge要在main分支上
|
|
恢复分支:git checkout -b dev 提交id
|
|
定义指令别名:alias graph="git log --oneline --graph --decorate --all"
|
|
git rebase main 将当前的main分支并入到dev分支的后面。
|
|
|
|
merge:不破坏原分支,方便回溯和查看 产生额外费用.
|
|
Rebase:不会新增额外的提交记录,改变了branch out中的节点。避免在共享分支中使用。
|
|
|
|
七、工作流模型
|
|
就是一些比较好的规范和流程,可以让我们的工作更高效,更有条理
|
|
比如GitFlow工作流:包含了多个分支 主线:main 线上bug:hotfix 等等
|
|
2222111111
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|