git笔记

git:开源的分布式版本控制系统
在这里插入图片描述在这里插入图片描述

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

git基本操作

命令说明
git init初始化仓库
git clone 项目地址 拷贝一份远程仓库,也就是下载一个项目
git add添加文件到暂存区
命令说明
git status 查看仓库当前的状态,显示有变更的文件(红的是没加入暂存区 add之后文件变为绿色)
git log查看历史提交记录
git diff 比较文件的不同,即暂存区和工作区的差异。
git (文件) commit -m "注释" 提交暂存区到本地仓库
git commit -a = git add + git commit -m ""
(绿色:没commit 灰色:commit了)
git reset 回退版本。
git rm 将文件从暂存区和工作区中删除。
git mv 移动或重命名工作区文件
分支命令说明
git branch列出所有分支
git checkout 分支名切换分支
git branch 分支名/git checkout -b 分支名创建分支
git branch -d 分支名删除分支
git merge 分支名合并分支
git pullgit pull=git fetch+git merge FETCH_HEAD
git pushgit push origin master=git push origin master:master

merge出现冲突可以选择手动修改,修改之后使用git add告诉GIT冲突已解决

之前处理过一次冲突解决步骤如下:
vi a.txt          #解决冲突的文件
git add  a.txt    #将修复的文件添加至暂存区,这一步必须执行,否则无法执行下一步操作
git merge --continue  #继续执行pull操作中的merge
git pull ==== git fetch + git merge
参考博文:https://blog.csdn.net/qq_41496495/article/details/124610907

又看到一种解决方案是(我没试过):
$ git status -s
UU runoob.php
$ git add runoob.php
$ git status -s
M  runoob.php
$ git commit
[master 88afe0e] Merge branch 'change_site'

git reset

git reset 回退版本
git reset [–soft|–mixed|–hard] [HEAD]

参数说明示例
mixed默认为该参数,可以不带。用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区保持不变git reset [HEAD]
soft用于回退到某个版本git reset --soft HEAD
hard撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交git reset --hard HEAD
参数详细示例
mixedgit reset HEAD^ 回退所有内容到上一个版本
git reset HEAD^ hello.txt 回退hello.txt文件的版本到上一个版本
git reset 052e 回退到指定版本
softgit reset --soft HEAD~3 回退到上上上一个版本
hardgit reset --hard HEAD~3 回退到上上上一个版本
git reset --hard bae128 回退到某个版本回退点之前的所有信息
git reset --hard origin/master 将本地的状态回退到和远程的一样

HEAD说明

表示当前版本HEADHEAD~0
上一个版本HEAD^HEAD~1
上上一个版本HEAD^^HEAD~2
上上上一个版本HEAD^^^HEAD~3

git stash

当前分支做的修改不想提交,git stash可将修改的内容保存至堆栈区,待合适的时候恢复。如果在错误的分支进行了开发,可以先将内容保存至堆栈区,在目标分支上恢复。

命令说明
git stash可以将工作区和暂存区所有未提交的修改保存至堆栈区
git stash save "注释"用法同 git stash,如果使用 git stash会产生一条名为" WIP on branchname …"的内容,使用 git stash save 可以添加描述信息
git stash list查看 stash 栈
git stash pop应用 stash 会恢复之前缓存的工作目录,这个指令将缓存堆栈中的第一个 stash 删除(栈是先进后出)
git stash apply <stash>应用某一个stash 内容,不删除记录,默认是应用栈顶(即最新)的一条 stash
git stash drop [<stash>]默认删除栈顶stash 内容
例: git stash drop stash@{0}
git stash clear清空 stash 堆栈
git stash show显示 stash 的修改内容

默认情况下,git stash 会缓存下列文件:

  • 添加到暂存区的修改(staged changes)
  • Git 跟踪的但并未添加到暂存区的修改(unstaged changes)

但不会缓存以下文件:

  • 在工作目录中新的文件(untracked files)
  • 被忽略的文件(ignored files)

git stash 命令提供了参数用于缓存上面两种类型的文件。

  • 使用 -u 或者 --include-untracked 可以 stash untracked 文件。
  • 使用 -a 或者 --all 命令可以 stash 当前目录下的所有修改。

git rebase

参考文章:https://blog.csdn.net/weixin_42310154/article/details/119004977

HEAD

HEAD 是当前分支引用的指针,它总是指向某次commit,默认是上一次的commit。 这表示 HEAD 将是下一次提交的父结点。 通常,可以把 HEAD 看做你的上一次提交的快照。当然HEAD的指向是可以改变的,比如你提交了commit,切换了仓库,分支,或者回滚了版本,切换了tag等
原文链接:https://blog.csdn.net/raoxiaoya/article/details/110862360

遇到的问题示例

本地master出现错误 删除本地master

git rebase --abort

git reset --hard HEAD 

git reset --hard HEAD^^^

git pull -r origin master 

fatal: It seems that there is already a rebase-merge directory, and
I wonder if you are in the middle of another rebase.  If that is the
case, please try
        git rebase (--continue | --abort | --skip)
If that is not the case, please
        rm -fr ".git/rebase-merge"
and run me again.  I am stopping in case you still have something
valuable there.

Found a swap file by the name "/d/quantinfotech/rates-pm/rates-pm-datamodel/.git/.COMMIT_EDITMSG.swp"
          owned by: 86189   dated: Thu Jul 13 15:32:08 2023
         file name: /d/quantinfotech/rates-pm/rates-pm-datamodel/.git/COMMIT_EDITMSG
          modified: YES
         user name: 86189   host name: WangWenjing
        process ID: 1546
While opening file "/d/quantinfotech/rates-pm/rates-pm-datamodel/.git/COMMIT_EDITMSG"
             dated: Fri Jul 14 10:12:56 2023
      NEWER than swap file!

(1) Another program may be editing the same file.  If this is the case,
    be careful not to end up with two different instances of the same
    file when making changes.  Quit, or continue with caution.
(2) An edit session for this file crashed.
    If this is the case, use ":recover" or "vim -r /d/quantinfotech/rates-pm/rates-pm-datamodel/.git/COMMIT_EDITMSG"
    to recover the changes (see ":help recovery").
    If you did this already, delete the swap file "/d/quantinfotech/rates-pm/rates-pm-datamodel/.git/.COMMIT_EDITMSG.swp"

    to avoid this message.

Swap file "/d/quantinfotech/rates-pm/rates-pm-datamodel/.git/.COMMIT_EDITMSG.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort:

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# interactive rebase in progress; onto c5f874c
# Last commands done (2 commands done):
#    pick 9b915f1 交易通道补充的datamodel
#    pick de6c837 EVT-15912
# Next command to do (1 remaining command):
#    pick 58f0fb5 EVT-15912
# You are currently rebasing branch 'EVT-15912' on 'c5f874c'.
#
# Changes to be committed:
#       modified:   src/main/java/com/xxx/xxx/xxx.java
#       modified:   src/main/java/com/src/main/java/com/xxx/xxx/xxxx.java
#       modified:   src/main/java/com/src/main/java/com/xxx/xxx/xxxxx.java
...

gitlab提交request merge的操作提示:
在这里插入图片描述

问题:
在Idea中无法pull到gitee上更新后的内容
解决:
在项目文件夹下选择Git Bash Here
输入git pull --rebase origin master
在这里插入图片描述

此处出现报错
这是因为本地有更改没有提交。
如果需要提交,就git add ,git commit,提交上去;
如果不需要提交更改,就git stash,暂存;

我选择git stash
在这里插入图片描述继续输入git pull --rebase origin master
在这里插入图片描述

输入git push origin master
在这里插入图片描述重回Idea会发现更新成功

该问题的原文地址
Git:git pull 拉取更新报错,error: Cannot pull with rebase: You have unstaged changes.
git 关于本地没有 update 到最新版本的项目报错解决

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值