工作中实用的 Git 操作

    声明: 1. 本文为我的个人复习总结, 并那种从零基础开始普及知识 内容详细全面, 言辞官方的文章
              2. 由于是个人总结, 所以用最精简的话语来写文章
              3. 若有错误不当之处, 请指出

清空修改:

  1. 放弃 工作区 中 dirName 文件夹下的全部修改
    命令:git checkout dirName

  2. 放弃 工作区 中某个文件的修改
    命令:git checkout filename

  3. 强制放弃 工作区 和 暂存区 的修改
    命令:git checkout -f

    以上只能清空全部已修改的问题件, 但是对于新建的文件和文件夹无法清空, 必须组合下面命令;

    命令作用: 清空所有新建的文件和文件夹; git clean -d -f

查看未提交的文件等状态信息: git status

版本回退:

git reset --hard 版本号

git reset --hard HEAD^^^

git reset --hard HEAD~3

git init: 使文件夹被git管理起来
git log: 查看版本详细信息 即能看出id全称

git reflog: 查看版本简略信息 + 能看到其他操作的id

清空修改:

  1. 放弃 工作区 中 dirName 文件夹下的全部修改
    命令:git checkout dirName

  2. 放弃 工作区 中某个文件的修改
    命令:git checkout filename

  3. 强制放弃 工作区 和 暂存区 的修改
    命令:git checkout -f

    以上只能清空全部已修改的问题件, 但是对于新建的文件和文件夹无法清空, 必须组合下面命令;

    命令作用: 清空所有新建的文件和文件夹; git clean -d -f

查看未提交的文件等状态信息: git status

版本回退:

git reset --hard 版本号

git reset --hard HEAD^^^

git reset --hard HEAD~3

git init: 使文件夹被git管理起来
git log: 查看版本详细信息 即能看出id全称

git reflog: 查看版本简略信息 + 能看到其他操作的id

在这里插入图片描述

分支:

有这几种分支:

  1. 本地分支
  2. 远程 fork项目的 orgin分支
  3. 远程 原项目的 remoteHadoop分支

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ut5U8r5C-1670910703175)(img/image-20220912155456248.png)]

查看分支:

  1. git branch 查看本地分支

  2. git branch -r 查看远程分支

  3. git branch -a 查看本地和远程所有分支

切换分支:

git checkout test

创建分支:

// 会基于当前分支拷贝 进行创建新的本地分支

git branch test // 创建并切换分支: git checkout -b test

// 将新分支推到远端

git push origin test:testOrigin

删除分支:

  1. 对本地分支:

    git branch -D test

  2. 对远程origin分支:

    1. git push origin :testOrigin // 推送一个空分支过去, 即相当于删除
    2. git push origin --delete testOrigin

重命名分支:

  1. 对本地分支:

    这个没意义:

    git branch -m oldbranch newbranch

  2. 对远程origin分支:

    1. 删除 origin oldbranch
    2. push 本地oldbranch 到 origin的 newbranch

合并 test 分支到 master:

git merge test master

  • pull 拉下来(即 update 操作), 将本地代码更新为与远程一致

​ git pull 时由于 暂存区有提交会报错, 故需要 git reset --hard (或 git checkout -f ) 回退到上次修改之前的状态, 然后再 pull

  • push 推上去

​ idea里git update操作时, merge 记录更详细, rebase 记录更简略

push错了如何回退?

  1. git log 查看版本号 按下 Enter 加载更多,按下 q 退出浏览 log
  2. git reset --hard 版本号 (在本地回退) git reset --hard HEAD^
  3. git push -f origin 分支 (将本地库强制覆盖远端)

fork后的项目:

真实开发中, 有项目组公共的项目, 记作 bigdata/hadoop, 我们不能直接在这上面进行操作,

应该先把它fork到自己账号(记作 xjx/hadoop), 然后操作fork的项目

关于master分支, bigdata/hadoop 叫做remoteHadoop/master, xjx/hadoop 叫做origin/master

git提交流程:

先将 remoteHadoop bigdata/hadoop fork 成 origin xjx/hadoop

-> git push 到origin xjx/hadoop

-> Create Merge Request(pull request) 申请同步到 remoteHadoop bigdata/hadoop

-> review 由leader进行审核

-> Accept Merge Request 审核通过, 允许把改动同步到 remoteHadoop bigdata/hadoop

fork后的项目 如何同步原项目新增了的一个文件呢?

  1. 为 bigdata/hadoop 的git地址 起个别名 remoteHadoop
git remote add remoteHadoop git@newgit.op.xxx.com:bigdata-xxx-platform/hdp-xxx-release.git
  1. 感知 remoteHadoop 的新数据
git fetch remoteHadoop
  1. 将新数据拉取到 origin
git merge remoteHadoop/master
  1. push到origin (使用idea时选用origin)
git push origin master

fork后的项目 如何同步原项目新增了的一个分支 test-new 呢?

  1. 为 bigdata/hadoop 的git地址 起个别名 remoteHadoop
git remote add remoteHadoop git@newgit.op.xxx.com:bigdata-xxx-platform/hdp-xxx-release.git
  1. 感知 remoteHadoop 的新分支
git fetch remoteHadoop
  1. 创建一个本地分支,追踪关系到远程 test-new
git checkout -b  test-new  remoteHadoop/test-new 
  1. push到origin (使用idea时选用origin)
git push origin test-new

一些报错:

git操作时, 注意看控制台反馈是否成功了 是否有报错

  1. 如果报错文件名太长: 就输入 git config --system core.longpaths true 这条命令

  2. git 找不到明明已存在的分支:

    问题复现 :

    git checkout xjx

    报错:error: pathspec ‘xjx’ did not xmatch any file(s) known to git

    解决方法:

    git fetch
    再切换分支: git checkout xjx

怎么撤销一个已经push了的commit?

3种方案:

  1. git revert -n 版本号

    会生成一条commit

  2. git reset --hard HEAD^ 然后 git push -f origin 分支名

    撤销最近一次的 commit

  3. git rebase squash

    撤销中间某次的commit

误删了一个分支怎么办?

  1. 即基于某个版本号 进行创建一个新分支即可

    git branch test-recover d46998d32a19c830f5917695306bd4bd82d29d62

  2. 推送到远端:

    git push origin test-recover:test-recover

amend:

如题,本条仅适用于修改已经push过了的最近一次的commit注释信息,确保本地文件的最新的。

step1:使用【git commit --amend】命令,会进入到vim编辑器。

step2:输入【i】,即进入编辑模式,此时编辑提交信息。

step3:编辑好之后,按键【Esc】,输入【:wq】,即保存和退出。

step4:输入【git push -f】强制提交。

  • amend 不便于旧代码 git pull,容易形成冲突

用远程分支强制覆盖本地:

git pull --force origin masterLocal:masterOrigin

查看两个版本的差别:

git diff v1 v2

Rebase 和 Merge:

功能上:Rebase既可以做合并代码,又可以做合并commit;而 Merge 只能做合并代码

合并代码上:Rebase不保留合并前的feature分支的具体commit信息,而 Merge 会保留其具体commit信息

rebase的使用: https://www.jianshu.com/p/4a8f4af4e803

CherryPick:

把某一次 commit Copy过来

分支:

有这几种分支:

  1. 本地分支
  2. 远程 fork项目的 orgin分支
  3. 远程 原项目的 remoteHadoop分支

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jaY49Pd0-1670910688222)(img/image-20220912155456248.png)]

查看分支:

  1. git branch 查看本地分支

  2. git branch -r 查看远程分支

  3. git branch -a 查看本地和远程所有分支

切换分支:

git checkout test

创建分支:

// 会基于当前分支拷贝 进行创建新的本地分支

git branch test // 创建并切换分支: git checkout -b test

// 将新分支推到远端

git push origin test:testOrigin

删除分支:

  1. 对本地分支:

    git branch -D test

  2. 对远程origin分支:

    1. git push origin :testOrigin // 推送一个空分支过去, 即相当于删除
    2. git push origin --delete testOrigin

重命名分支:

  1. 对本地分支:

    这个没意义:

    git branch -m oldbranch newbranch

  2. 对远程origin分支:

    1. 删除 origin oldbranch
    2. push 本地oldbranch 到 origin的 newbranch

合并 test 分支到 master:

git merge test master

  • pull 拉下来(即 update 操作), 将本地代码更新为与远程一致

​ git pull 时由于 暂存区有提交会报错, 故需要 git reset --hard (或 git checkout -f ) 回退到上次修改之前的状态, 然后再 pull

  • push 推上去

​ idea里git update操作时, merge 记录更详细, rebase 记录更简略

push错了如何回退?

  1. git log 查看版本号 按下 Enter 加载更多,按下 q 退出浏览 log
  2. git reset --hard 版本号 (在本地回退) git reset --hard HEAD^
  3. git push -f origin 分支 (将本地库强制覆盖远端)

fork后的项目:

真实开发中, 有项目组公共的项目, 记作 bigdata/hadoop, 我们不能直接在这上面进行操作,

应该先把它fork到自己账号(记作 xjx/hadoop), 然后操作fork的项目

关于master分支, bigdata/hadoop 叫做remoteHadoop/master, xjx/hadoop 叫做origin/master

git提交流程:

先将 remoteHadoop bigdata/hadoop fork 成 origin xjx/hadoop

-> git push 到origin xjx/hadoop

-> Create Merge Request(pull request) 申请同步到 remoteHadoop bigdata/hadoop

-> review 由leader进行审核

-> Accept Merge Request 审核通过, 允许把改动同步到 remoteHadoop bigdata/hadoop

fork后的项目 如何同步原项目新增了的一个文件呢?

  1. 为 bigdata/hadoop 的git地址 起个别名 remoteHadoop
git remote add remoteHadoop git@newgit.op.xxx.com:bigdata-xxx-platform/hdp-xxx-release.git
  1. 感知 remoteHadoop 的新数据
git fetch remoteHadoop
  1. 将新数据拉取到 origin
git merge remoteHadoop/master
  1. push到origin (使用idea时选用origin)
git push origin master

fork后的项目 如何同步原项目新增了的一个分支 test-new 呢?

  1. 为 bigdata/hadoop 的git地址 起个别名 remoteHadoop
git remote add remoteHadoop git@newgit.op.xxx.com:bigdata-xxx-platform/hdp-xxx-release.git
  1. 感知 remoteHadoop 的新分支
git fetch remoteHadoop
  1. 创建一个本地分支,追踪关系到远程 test-new
git checkout -b  test-new  remoteHadoop/test-new 
  1. push到origin (使用idea时选用origin)
git push origin test-new

一些报错:

git操作时, 注意看控制台反馈是否成功了 是否有报错

  1. 如果报错文件名太长: 就输入 git config --system core.longpaths true 这条命令

  2. git 找不到明明已存在的分支:

    问题复现 :

    git checkout xjx

    报错:error: pathspec ‘xjx’ did not xmatch any file(s) known to git

    解决方法:

    git fetch
    再切换分支: git checkout xjx

怎么撤销一个已经push了的commit?

3种方案:

  1. git revert -n 版本号

    会生成一条commit

  2. git reset --hard HEAD^ 然后 git push -f origin 分支名

    撤销最近一次的 commit

  3. git rebase squash

    撤销中间某次的commit

误删了一个分支怎么办?

  1. 即基于某个版本号 进行创建一个新分支即可

    git branch test-recover d46998d32a19c830f5917695306bd4bd82d29d62

  2. 推送到远端:

    git push origin test-recover:test-recover

amend:

如题,本条仅适用于修改已经push过了的最近一次的commit注释信息,确保本地文件的最新的。

step1:使用【git commit --amend】命令,会进入到vim编辑器。

step2:输入【i】,即进入编辑模式,此时编辑提交信息。

step3:编辑好之后,按键【Esc】,输入【:wq】,即保存和退出。

step4:输入【git push -f】强制提交。

  • amend 不便于旧代码 git pull,容易形成冲突

用远程分支强制覆盖本地:

git pull --force origin masterLocal:masterOrigin

查看两个版本的差别:

git diff v1 v2

Rebase 和 Merge:

功能上:Rebase既可以做合并代码,又可以做合并commit;而 Merge 只能做合并代码

合并代码上:Rebase不保留合并前的feature分支的具体commit信息,而 Merge 会保留其具体commit信息

rebase的使用: https://www.jianshu.com/p/4a8f4af4e803

CherryPick:

把某一次 commit Copy过来

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值