Git命令归纳

初始化git

  1. git config --global user.name xxx:设置全局用户名,信息记录在~/.gitconfig文件中
  2. git config --global user.email [email protected]:设置全局邮箱地址,信息记录在~/.gitconfig文件中
  3. git init:先创建一个目录,进入这个目录文件,将当前目录配置成git仓库,信息记录在隐藏的.git文件夹中

三区的概念

  • 工作区:仓库的目录,也就是当前目录文件下,所有修改操作均在这里进行。工作区是独立于各个分支的,也就是所有分支共享同一个工作区。
  • 暂存区:数据暂时存放的区域,类似于工作区写入版本库前的缓存区,当对工作区的修改进行git add操作后,修改的文件放入暂存区。暂存区是独立于各个分支的,也就是所有分支共享同一个暂存区。
  • 版本库:存放所有已经提交到本地仓库的代码版本,也就是将暂存区的文件commit后的地方。

本地操作

在本地目录下的文件进行开发

git add file_name:将工作区的XX文件添加到暂存区

git add .:将工作区的所有文件添加至暂存区
git commit -m "info":将暂存区的内容提交到当前分支

状态操作

git status:查看分支状态
git diff file_name:查看file_name文件相对于暂存区做了哪些修改

日志操作

git log:查看当前分支的所有版本

git log --pretty=oneline:单行查看当前分支的所有版本
git reflog:查看HEAD指针的移动历史(包括回滚的版本)

git reflog --pretty=oneline:单行查看HEAD指针的移动历史
git reset --hard HEAD^或者git reset --hard HEAD~:将代码库回滚到上一个版本

git reset --hard HEAD^^:往上回滚两次,以此类推
git reset --hard HEAD~100:往上回滚100个版本
git reset --hard 版本号:回滚到某一特定版本

恢复操作

当在工作区编写的代码很烂时,将工作区的修改恢复到暂存区的内容或者撤销工作区的修改时:

git restore <filename>

强行将暂存区的修改拉回到工作区:当觉得暂存区里的代码有错误时,需要拉回工作区进行修改时:

git restore --staged <filename>

分支操作

git branch branch_name:创建branch_name分支
git checkout -b branch_name:创建一个名为branch_name的分支,并跳转到此分支
git branch:查看所有分支和当前所处分支
git checkout branch_name:切换到branch_name分支
git merge branch_name:将分支branch_name合并到当前分支
git checkout -d branch_name:删除本地仓库的branch_name分支

本地与云端的操作

第一步

git remote add origin [email protected]:xxx/XXX.git:将本地仓库关联到远程仓库

本地到云端 push操作

将本地分支推送到云端

如果你是独立开发(或者团队开发中只用到一个分支),一般只涉及一个分支,第一种方式后续操作会更简单

复制代码
1、git push -u origin branch_name (或者 git push --set-upstream)

用途:将当前分支推送到远程仓库,并且设置本地branch_name分支与远程branch_name分支的关联(或者叫做建立本地分支对云端某个分支的追踪)。

解释:-u 是 --set-upstream 的简写。

在第一次推送本地分支时,使用 -u 会建立一个跟踪关系,这样在以后使用 git push 或 git pull 时,不需要指定远程仓库和分支名。如果独自开发,由于只有一个分支(当前的master分支),只需要输入git push -u。

复制代码
2、git push origin branch_name

用途:将本地的指定分支推送到远程仓库,不会设置远程追踪。

解释:这个命令会把 branch_name 分支推送到远程origin仓库,但不会建立跟踪关系。即使你以后使用 git push 或 git pull,你仍然需要明确指定远程仓库和分支名。

复制代码
3、git push -d origin branch_name:删除远程仓库的branch_name分支

云端到本地的pull操作

首先,默认情况下,从本地git pull的内容都是云端master(或main)分支的内容。所以在一开始,也就是pull之前,我们就要规避掉所有可能存在的风险:

  1. 在push阶段,就要建立本地与云端相同分支之间的关联;
  2. 在pull之前,执行下列操作:

git fetch:从远程仓库抓取(fetch)最新的改动(代码、提交记录等),但不会自动合并。执行此命令,可以先查看云端最新的代码,再决定要不要pull。

git pull:相当于git fetch+git merge,从远程仓库获取最新的代码并合并到当前分支。

如果本地dev分支未与云端dev分支建立关联

这样它并不会自动追踪 origin/dev,除非你手动设置。

这时候如果你执行:

git pull

git 会报错,像这样:

fatal: The current branch dev has no upstream branch.

To push the current branch and set the remote as upstream, use

复制代码
    git push --set-upstream origin dev

提醒你将本地分支与云端分支建立关联;或者执行git pull origin branch_name,将远程仓库的branch_name分支与本地仓库的当前分支合并

当你想对本地和云端的某个分支(可以不同名)建立关联,执行下面的命令:
git branch -u origin/branch_name1 branch_name2:将远程的branch_name1分支与本地的branch_name2分支对应

git stash 是 Git 里非常实用的一个命令,它的作用可以一句话概括:

"把你当前的修改先临时保存起来,让工作区回到干净状态。"

什么时候会用到 git stash?

比如你正在开发功能,但突然需要:

  • 切换到其他分支修一个紧急 bug
  • 拉代码、合并别人提交,但本地有改动冲突
  • 暂时不想提交当前改动,但又不想丢掉它

这时候就可以用:

git stash

Git 会把你当前的 修改内容(工作区和暂存区)保存起来,然后让你工作区"看起来像刚刚 git checkout 完的一样"。

常用命令速查:

命令 作用
git stash 保存当前改动(默认名)
git stash save "备注说明" 保存时加上备注
git stash list 查看所有 stash 的记录
git stash pop 恢复最近的一次改动并移除它
git stash apply 将栈顶存储的修改恢复到当前分支,但不删除栈顶元素
git stash drop 删除栈顶的 stash
git stash clear 清除所有 stash

注意:

git stash 不会保存 未追踪的文件(untracked)和 .gitignore 的内容,除非你用:

git stash -u 包括 untracked

git stash -a 所有内容,包括忽略文件

总结一句话:

git stash 就像 Git 里的"临时背包",先把当前改动塞进去,等会儿再拿出来接着干!

总结

其实git操作并没这么复杂,只涉及到很简单的流程:

当你是开发一个新项目时

第一步

复制代码
mkdir dir_name:本地创建目录文件

第二步

云端(GitLab或GitHub等)创建一个相同名字的project或repo

第三步

复制代码
git remote add origin [email protected]:xxx/XXX.git:将本地仓库关联到远程仓库

第四步

本地目录中进行开发:

复制代码
git push -u origin branch_name:建立本地分支与云端分支的关联
vim file_name
git add .
git commit -m "..."
git push

当你对已开发项目进行修改时

第一步

复制代码
git checkout branch_name:跳到你的分支上(一般情况一开始就是在自己的分支上)

第二步

复制代码
git pull:拉取代码最新进展
vim file_name
git add .
git commit -m "..."
git push
相关推荐
Ac157ol2 小时前
2025年最新版 Git和Github的绑定方法,以及通过Git提交文件至Github的具体流程(详细版)
git·elasticsearch·github
书山有鹿2 小时前
Git合并分支的两种常用方式`git merge`和`git cherry-pick`
git
沐风ya2 小时前
git -- 对远程仓库的操作 -- 查看,添加(与clone对比),抓取和拉取,推送(注意点,抓取更新+合并的三种方法,解决冲突,对比),移除
git
spencer_tseng3 小时前
IntelliJ IDEA clean git password
java·git·eclipse·intellij-idea
Fishermen_sail7 小时前
如何写 commit message?
git·github
程序猿chen8 小时前
《JVM考古现场(二十三):归零者·重启奇点的终极奥义》
java·jvm·git·后端·程序人生·java-ee·改行学it
半个脑袋儿8 小时前
Git提交修正的核心技巧:git commit --amend 的专业实践与深度解析
git·gitlab
程序猿chen2 天前
JVM考古现场(二十二):降维打击·用二向箔优化内存模型
java·jvm·git·后端·面试·java-ee·跳槽
汤永红2 天前
windows下git bash安装SDKMan报错Looking for unzip...Not found
java·git·sdkman