GIT一节课

这是第一篇一节课系列,会不断更新迭代。GIT是一个开源的分布式版本控制系统,

如上图先理解GIT的4个工作区域:
workspace: 工作区
index/Stage: 暂存区
Repository: 本地仓库
Remote: 远程仓库

刚写的代码都是在工作区,执行add命令后就是提交到了暂存区,再执行commit命令后就把代码提交到了版本库(本地仓库)了,最后再执行push命令把本地代码提交到远程版本库。

.gitconfig配置,mac配置到home目录下的.gitconfig即可,没有就创建一个

[alias]
    st = status
    co = checkout
    cm = commit
    br = branch
[color]
    diff = auto
    branch = auto
    interactive = auto
    status = auto

使用之前需要配置个人信息

git config --global user.name "Your Name Comes Here"
git config --global user.email you@yourdomain.example.com

通过log查看修改了哪些文件.
git log --stat

切分支
git checkout <分支名>

让文件恢复到最近一次commit或add的状态, "."表示指定为当前目录为恢复目录
git checkout -- .

建立本地的dev分支追踪远程仓库的develop分支
git checkout –b dev origin/develop

从指定tag建立对应的本地的ltag分支
git checkout –b ltag <tag名>

创建一个空的分支

git checkout --orphan <空分支名> //创建一具分支不会指向任何以前的提交,就是它没有历史
git rm -rf .  //把当前内容全部删除,‘.’不能少。
echo '# new branch' >> README.md  //创建一个空文件
git add README.md
git commit -m 'new branch'
git push origin <空分支名>

从origin拉下来一些更新,但是产生了很多冲突,你暂时没有这么多时间去解决这些冲突,因此你决定稍候有空的时候再重新pull。可以用以下命令恢复到合并之前。
git reset --hard

废弃这次提交
git reset --hard HEAD^

恢复到指定提交
git reset --hard <提交号(commit id)>

假设你已经使用git add .,将修改过的文件a、b加到暂存区,现在你只想提交a文件,不想提交b文件,应该这样
git reset HEAD b

创建本地分支
git branch <分支名>

删除本地分支,可以同时删除多个
git branch -D <分支名>

显示远程分支
git branch -r

查看远程仓库的信息
git remote show origin

对比工作区与暂存区指定文件的差异
git diff <文件名>

对比暂存区与最后一次commit指定文件的差异
git diff --cached <文件名>

两个分支上最后 commit 的内容的差别
git diff <分支名1> <分支名2>

显示出所有有差异的文件(不详细,没有对比内容)
git diff branch1 branch2 --stat

显示出所有有差异的文件的详细差异(更详细)
git diff branch1 branch2

显示指定文件的详细差异(对比内容)
git diff branch1 branch2 <具体文件路径>

找出自昨天之后你已经做了什么改变
git diff "@{yesterday}"

删除远程的分支,可以同时删除多个
git push origin :<分支名1> :<分支名2>

查看某个分支的创建者以及创建时间

git for-each-ref --format='%(committerdate) %09 %(authorname) %09 %(refname)' | sort -k5n -k2M -k3n -k4n

刷新本地仓库与远程仓库的同步相关改动,比如你远程删除了一个分支,到本地查看还有此分支,你需要用如下命令将本地仓库的对应的分支也清理掉
git remote prune origin

看有关于origin的一些信息,包括分支是否tracking(跟踪)。
git remote show origin

同时从工作区和索引中删除文件。即本地的文件也被删除
git rm

从索引中删除文件。但是本地文件还存在, 只是不希望这个文件被版本控制。
git rm --cached

将指定的提交(commit)应用于当前分支,commitHash是提交编号,cherry-pick常用于合并其他分支部分功能
git cherry-pick <commitHash>

一次应用多个提交。
git cherry-pick <HashA> <HashB>

应用一系列的连续提交,提交 A 必须早于提交 B,但不包含A提交
git cherry-pick A..B

应用一系列的连续提交,提交 A 必须早于提交 B,包含A提交
git cherry-pick A^..B

cherry-pick -m配置项告诉 Git,应该采用哪个分支的变动。它的参数parent-number是一个从1开始的整数,代表原始提交的父分支编号。
git cherry-pick -m 1 <commitHash>

posted @   凡间的雨  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示