制作相册音乐相册模板,sem推广和seo的区别,免费域名注册2023,长沙网站建设方面Git学习——细节补充 1. git diff2. git log3. git reset4. git reflog5. 提交撤销5.1 当你改乱了工作区某个文件的内容#xff0c;想直接丢弃工作区的修改时5.2 当提交到了stage区后#xff0c;想要退回 6. git remote7. git pull origin master --no-rebase8. 分支管理9. g… Git学习——细节补充 1. git diff2. git log3. git reset4. git reflog5. 提交撤销5.1 当你改乱了工作区某个文件的内容想直接丢弃工作区的修改时5.2 当提交到了stage区后想要退回 6. git remote7. git pull origin master --no-rebase8. 分支管理9. git rebase10. git cherry-pick选择性提交总结 1
1. git diff
如果忘记了修改了什么可以使用此命令进行变更详情查看。
# 1. 查看当前目录指定文件与暂存区目录该文件之间的区别
git diff hwy.txt
# 2. 查看当前目录所有文件变更情况
git diff
# 3. 查看当前目录与最新的提交HEAD之间的差异
git diff HEAD -- cxk.txt2. git log
git log # 详细的查看历史的所有commit版本3. git reset
# 回退历史版本
git reset --hard HEAD^ # 回退到上一个commit版本
git reset --hard HEAD~5 # 向前回退5个commit版本
git reset --hard st34f2r # 变更到指定某一个版本4. git reflog
由于后退到某个历史版本后git log就不会输出该版本之后的提交id可以通过查看git命令执行日志找到对应的提交ID在进行commit版本变更。
git reflog5. 提交撤销
5.1 当你改乱了工作区某个文件的内容想直接丢弃工作区的修改时
git checkout -- cxk.txt # 1. 撤回指定文件工作区中的修改5.2 当提交到了stage区后想要退回
git reset HEAD cxk.txt场景1当你改乱了工作区某个文件的内容想直接丢弃工作区的修改时用命令git checkout – file。场景2当你不但改乱了工作区某个文件的内容还添加到了暂存区时想丢弃修改分两步第一步用命令git reset HEAD file就回到了场景1第二步按场景1操作。场景3已经提交了不合适的修改到版本库时想要撤销本次提交参考版本回退一节不过前提是没有推送到远程库。 6. git remote
# 1. 新建与远程仓库的链接
git remote add origin gitgithub.com:username/project_name.git# 2. 删除与远程仓库的链接
git remote -v # 查看有哪些远程仓库链接
git remote rm xxxxxx # rm删除与远程仓库的链接7. git pull origin master --no-rebase
# 当遇到本地仓库有自己独有的文件远程仓库有独有的文件合并两个仓库
# 1. 重新生成一个提交用于合并本地分支和远程仓库分支
git pull origin master --no-rebase# 2. 采用变基rebase策略将本地分支的所有提交在远程分支最新提交上”重新播放“从而达到一个线性的提交历史
git pull origin master --rebase8. 分支管理
git checkout -b dev # 快速创建一个dev分支并切换到该分支# 等价于如下
git branch dev
git checkout dev # 合并dev到当前所在分支
git merge dev需要切换到指定分支然后再将dev分支合并到指定分支.创建分支实际上只是创建了一个指向当前commit的一个指针上述merge将会采用Fast-forward策略快速合并这是因为这种合并只是将master指针指向了dev当前commit所在的版本位置。随后直接删除dev即可 9. git rebase
当本地分支需要与远程分支同步但是远程分支已经有了新的版本因此无法直接git push.
此时需要先git pull origin master将远程的分支与本地进行合并但是这样一来就会有很多分叉的历史提交线.
为了保证美观因此可以考虑使用变基(rebase)
这里我演示一下rebase的工作原理 任务: 新建并切换到 bugFix 分支提交一次切换回 main 分支再提交一次再次切换到 bugFix 分支rebase 到 main 上 # 1. 创建bugFix分支并切换过去
git checkout -b bugFix2. 在bugFix分支提交一次随后切回到main分支这里就不打命令了3. 在main分支commit一次这里就不打命令了
git checkout bugFix # 切到bugFix分支# 4. 执行rebase合并变基合并
git rebase mainrebase工作原理可以解释为如下 将c1-c2的变更操作应用到main分支的最新提交位置从而达到合并的效果。因此在main分支的最新提交处c3新增了一个提交操作从而到达了c2’c3-c2的文件变更情况与c1-c2一样 为了更详细的展示这里举了一个多次commit的例子。
如下图可以看到
bugFix的提交过程为C1-C2-C3main的提交过程为C1-C4-C5
执行rebase命令后则会将C1-C2-C3的版本变更操作执行到main分支的最新提交C5上;
从而得到一个使得历史提交版本线像是在同一条线上进行的更加美观。 PS: merge和rebase的用户不同之处 rebase如果需要将A分支合并到B分支则需要先切换到A分支然后执行git rebase B有种基于B把当前分支提交合并进去的意思merge如果需要将A分支合并到B分支那么直接切到B分支作为骨干执行git merge A有种将A拉过来合并的意思。 10. git cherry-pick选择性提交
# 顾名思义筛选挑拣。
# 意思是指定一些commit合并到当前所在分支。
git cherry-pick c3 c4 (可接多个提交版本)举个例子下图共有4个分支当前处于main分支现在想要吧c3c4c7三个提交合并到main分支上。 神奇的事情来了通过执行如下命令完成筛选合并。
可以发现main分支从当前位置c1开始依次提交c3 c4 c7
git cherry-pick c3 c4 c7总结
最后个人学习过程中用到的网站如下
基础概念廖雪峰-git教程模拟实战Learn Git Branching本地模拟在本地模拟一个git远程仓库
2023.09.01 工作区和暂存区 ↩︎