Github命令行笔记汇总
Github 命令行笔记汇总
第一节:基础命令
使用命令行操作Git
基础命令
git --version- 返回git版本,说明安装过gitgit clone <仓库地址>- 克隆git远程仓库到本地git status- 查看目前的git状态,处于哪个分支,是否同步,更改文件详情,暂存区情况等git add <文件名称>- 将文件更改提交到git暂存区git commit -m"Commit message"- 将暂存区的更改提交到本地git仓库git push- 将本地git仓库的更改提交到远程仓库git add .- 将所有修改的文件添加到暂存区git restore --staged <文件名>- 将已经存储到暂存区的文件取出来git commit -am"Commit message"- add和commit的结合体,这里只包括修改的文件,如果是新增的文件还需要使用git add .git pull- 从远程仓库拉取更新到本地
高级pull配置
-
git pull --rebase- 拉取更新时产生线性的提交记录,推荐多使用- 可以修改配置让git pull默认使用rebase:
git config pull.rebase true - 改回默认:
git config pull.rebase false
- 可以修改配置让git pull默认使用rebase:
文件操作
- 直接在文件资源管理器删除,使用
git rm <文件名>指明git不需要管理这个文件 git rm <文件名>- 将文件的删除操作移动到git的暂存区git mv <原文件> <移动后的地址>- 将文件的移动操作放置到git的暂存区git mv <原文件名> <新文件名>- 将文件重命名,并放置到git的暂存区
日志与历史
git log- 在终端查看git的提交记录日志,使用q键可以退出git reset --mixed <Commit id>- 将分支重置到历史提交记录中的某次提交中(需要强制推送)git restore <文件名>- 将文件的修改discard掉,取消文件当前的修改git show <Commit id>- 查看某次commit的详细信息git revert <Commit id>- 生成一个反向的操作,抵消修改的内容,实现回退效果git commit --amend- 修改最后一次提交的错误修改(本地方便使用,远程需强制推送)
第二节:分支管理
分支操作
git branch- 查看所有的本地分支git branch -a- 查看所有分支,包括远程分支git checkout -b <新的分支>- 创建新的分支,基于本地的当前分支创建git push --set-upstream origin <新的分支>- 把本地新创建的分支推送到远程仓库git switch <目标分支>- 把当前分支切换到目标分支git branch -d <目标分支>- 删除目标分支(如果未合并,使用-D强行删除)git push origin --delete <目标分支>- 删除远程仓库的分支git fetch- 将远程仓库的分支信息同步到本地git checkout <目标分支>- 让本地当前分支变为目标分支git merge <目标分支>- 把目标分支merge到当前分支
合并策略
Fast Forward
- 当feature分支要合并到main分支,且它们在一条线上时,merge就是单纯的把main的指针向前移动
- 使用命令:
git merge feature
Non Fast Forward
- 当两个分支不处于同一条线上时,merge会让分叉汇聚
- 使用命令:
git merge <目标分支>
No Fast Forward
- 即使有fast forward条件,也强行产生分叉
- 使用命令:
git merge --no-ff <目标分支>
Rebase
git rebase <目标分支>- 变基,把目标分支的内容合并到当前分支- 注意: 如果不处于fast forward状态,必须使用强制推送才能push到远程仓库
比较分支
比较commit的改动
git log <不显示这个分支的改动>..<显示这个分支有的改动>- 基于左边,看右边的分支相对于左边有哪些新的改动- 使用
...(三个点)会显示两边的差异
比较文件内容的不同
git diff <基于的分支>..<目标的分支>- 显示右侧分支相对于左侧分支的文件改动
特殊合并
git merge --squash <目标分支>- 把目标分支的多次提交squash为一个提交然后merge到当前分支(需要手动commit)
解决冲突
Merge冲突
- 编辑文本解决冲突后,提交到暂存区,再commit
Rebase冲突
- 解决冲突方式同上
- 使用
git rebase --continue继续rebase - 使用
git rebase --abort放弃本次rebase - 需要
git add <目标文件>,然后git rebase --continue
Cherry-pick
git cherry-pick <目标提交的哈希值>...- 将指定提交挑拣出来merge到当前分支
第三节:高级操作
Diff比较
git diff- 比较当前工作目录和暂存区的差异git diff --staged- 比较暂存区和本地分支的差异git diff HEAD- 比较工作目录和本地分支的差异
分支比较
两点比较
git diff <被比较分支>..<比较分支>- 显示右边分支相对于左边分支的差异
三点比较
git diff <被比较分支>...<比较分支>- 显示比较分支相对于被比较分支和比较分支的最近公共祖先的差异- Github提交PR时,默认是3点比较
Commit比较
git diff <commit_id> <commit_id>- 任选两个commit id进行比较
Stash
git stash- 将暂存的修改stash起来(先执行git add)git stash -a- 同时把工作区暂存的修改全部stash起来git stash list- 查看stash的信息git stash apply <stash的名字>- 取出stash但不删除git stash pop <stash的名字>- 取出stash并删除
Tag
git tag <tag名字>- 给当前分支打taggit tag <tag名字> <commit_id>- 给指定的提交打taggit push --tags- 将tag push到远端git tag -d <tag的名字>- 删除本地taggit push origin --delete <tag的名字>- 删除远端tag
Squash多个提交
使用reset
- mixed reset到要压缩的前一个分支
- 后面的提交消失但文件更改还在
- 直接commit相当于压缩
使用rebase
git rebase -i <commit_id>- 进入交互式rebase- 将pick换成
squash来压缩到第一次提交 - 功能强大但推送到远端需强制推送
阅读剩余
版权声明:
作者:CN059
链接:https://www.cn059.com/2025/11/21/github%e5%91%bd%e4%bb%a4%e8%a1%8c%e7%ac%94%e8%ae%b0%e6%b1%87%e6%80%bb.html
文章版权归作者所有,未经允许请勿转载。
THE END
