总结实践中的GIT使用技巧

本文详细介绍了Git的工作原理及常用命令,包括版本库管理、分支操作、远程仓库交互、合并与冲突解决等。同时,讲解了Git stash用于临时保存未提交更改的功能。文中还探讨了merge和rebase两种合并策略的适用场景,并提供了IDEA中Git操作的简要说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

GIT

subscribe

  • 菜鸟git教程:https://www.runoob.com/git/git-tutorial.html
  • githug游戏【学习git命令】:https://github.com/Gazler/githug
  • GIT官方手册:https://git-scm.com/docs

GIT原理解析

  • 原理

    workspace:工作区 / staging area:暂存区 / 缓存区/local repository:版本库或本地仓库 / remote repository:远程仓库

    新增和修改文件都只是在工作目录,是不受GIT管理的,通过git add命令【git add . 所有文件加入暂存区】加入暂存区由GIT管理;

    常规正向操作用IDEA提供的按钮就可以【可以通过console看执行的GIT命令】,涉及到逆向操作可以用GIT命令, 逻辑更加明确。
    在这里插入图片描述

GIT命令行操作

# 单条分支操作!
## 基础操作
git config user.name   # 获取当前登录的用户
git config user.email  # 获取当前登录用户的邮箱
git config --global user.name 'userName'    # 修改登陆账号
git config --global user.email 'email'      # 修改登陆邮箱
git config --global user.password 'password'  # 修改登陆密码
git init # 初始化仓库【本地初始化的仓库需要在远程建仓库之后才能push过去,所以首先先从GITHUB建仓库再拉到本地】
git clone [url] # 拷贝远程GIT仓库到本地【url 后可加本地仓库名 一般不加跟url仓库名相同】
git add . # 所有文件添加到暂存区【或者git add fileName添加单个文件】
git commit -m 'commit messages' # 提交暂存区改动到版本库【本地】
git reset [--hard,mixed,soft] commitId # 回退到特定【commitId】的提交节点;commitId为HEAD表示当前提交的最新一次提交
git revert commitId # 回退某次commit,并将该操作作为一次新的commit

## 远程操作
git remote -v # 查看远程仓库地址【origin 为远程地址的别名】
git remote rm name  # 删除远程仓库
git remote rename old_name new_name  # 修改仓库名
git remote add origin git@github.com:tianqixin/runoob-git-test.git
git push -u origin master # 提交到 Github
git fetch origin# 从远程获取代码库到版本库\
git pull <远程主机名> <远程分支名>:<本地分支名> # git pull origin master 从远程获取代码并合并本地的版本
git push [-f,--force] <远程主机名> <本地分支名>:<远程分支名> # git push origin master 将本地的分支版本上传到远程并合并;
# -f/--force 如果本地版本与远程版本有差异,但又要强制推送可以使用
git push origin --delete master # 删除主机的分支可以使用 --delete 参数

## 查看操作
git status [-s]# 用于查看在你上次提交之后是否有对文件进行再次修改【-s参数获取简短输出】
git diff [file] # 比较文件在暂存区和工作区的差异,较少用到
git log [--oneline,--graph,--pretty=oneline] # 查看GIT操作日志,每次commit都会生成一个hash标识;--oneline参数可以显示简短hash同样可以标识该节点
git reflog [--oneline,--graph,--pretty=oneline] # 查看所有分支的所有操作记录信息(包括已经被删除的 commit 记录和 reset 的操作,git log 不包括)
git blame <file> # 查看指定文件的修改记录

## 文件存亡改动
git rm [-f --cached] [file] # 将文件从暂存区和工作区中删除
git mv [-f] [file] [newfile] # 移动或重命名一个文件、目录或软连接


# 多条分支合并操作!
## 合并分支
git branch # 列出所有分支, *标识当前所在分支
git branch (branchname) # 创建分支,从执行该命令的当前分支拉出一条新分支
git branch -d (branchname) # 删除分支
git checkout (branchname) # 切换分支,Git会用该分支的最后提交的快照替换你的工作目录的内容, 所以多个分支不需要多个目录
git checkout -b (branchname) # 创建并切换分支
git merge (branchname) #将分支branchname合并到执行该命令的当前分支,两条支线合并在一个新的提交节点
git rebase (branchname) #将分支branchname合并到执行该命令的当前分支,分支branchname作为当前分支所有提交的父提交节点,一条支线

## git tag标签【为某次commitId打上标识】
git tag -a (标签名) [-m 'tag messages'] commitId # 创建标签
git tag # 查看所有标签


# 其他【临时保存】
git stash [save 'save messages'] # 执行零时存储,只管理GIT可以跟踪到的改动(git add了的[绿色] 和 在已有提交的文件上的改动[蓝色])
git stash list # 查看临时存储了哪些
git stash pop/apply # 恢复

GIT合并原理

merge

一般在开发过程中,具体的步骤如下(下面是一个简单说明):

  1. 下载项目代码 git clone xxxx
  2. 新建一个自己的分支(dev) git checkout -b dev
  3. 然后在自己本地进行开发测试
  4. 现在需要合并团队的最新代码(master), 把master的代码合并到dev上,如果有冲突就解决冲突 git merge master
  5. 最后git push dev, 执行MR,即执行合并请求,master分支主人同意后,你的更新代码就上去了。

Merge the incoming changes into the current branch:
在这里插入图片描述
在这里插入图片描述

rebase

关于git rebase,首先要知道的是,它解决的是与git merge相同的问题。这两个命令的设计目的都是将一个分支的更改合并到另一个分支——它们只是采用了不同的方式。

  1. 切换到feature分支 git checkout feature
  2. 合并main分支内容到feature git rebase main
  3. 什么时候适合用rebase? 不要使用rebase 命令在公共分支

Rebase the current branch on top of the incoming changes:

在这里插入图片描述

IDEA GIT操作

  • 工作中的操作比较简单,参考红色字体的3步走【如果有冲突有弹窗手动合并冲突】;更多操作和细节参考黄色字体
    在这里插入图片描述

引用文章

小白专场: Merge the incoming changes into the current branc和Rebase the current branch on top of the …

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值