声明: 1. 本文为我的个人复习总结, 并非那种从零基础开始普及知识 内容详细全面, 言辞官方的文章
2. 由于是个人总结, 所以用最精简的话语来写文章
3. 若有错误不当之处, 请指出
清空修改:
放弃 工作区 中 dirName 文件夹下的全部修改
命令:git checkout dirName
放弃 工作区 中某个文件的修改
命令:git checkout filename
强制放弃 工作区 和 暂存区 的修改
命令: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
清空修改:
放弃 工作区 中 dirName 文件夹下的全部修改
命令:git checkout dirName
放弃 工作区 中某个文件的修改
命令:git checkout filename
强制放弃 工作区 和 暂存区 的修改
命令: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
分支:
有这几种分支:
- 本地分支
- 远程 fork项目的 orgin分支
- 远程 原项目的 remoteHadoop分支
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ut5U8r5C-1670910703175)(img/image-20220912155456248.png)]
查看分支:
git branch 查看本地分支
git branch -r 查看远程分支
git branch -a 查看本地和远程所有分支
切换分支:
git checkout test
创建分支:
// 会基于当前分支拷贝 进行创建新的本地分支
git branch test // 创建并切换分支: git checkout -b test
// 将新分支推到远端
git push origin test:testOrigin
删除分支:
对本地分支:
git branch -D test
对远程origin分支:
- git push origin :testOrigin // 推送一个空分支过去, 即相当于删除
- git push origin --delete testOrigin
重命名分支:
对本地分支:
这个没意义:
git branch -m oldbranch newbranch
对远程origin分支:
- 删除 origin oldbranch
- 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错了如何回退?
- git log 查看版本号 按下 Enter 加载更多,按下 q 退出浏览 log
- git reset --hard 版本号 (在本地回退) git reset --hard HEAD^
- 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后的项目 如何同步原项目新增了的一个文件呢?
- 为 bigdata/hadoop 的git地址 起个别名 remoteHadoop
git remote add remoteHadoop git@newgit.op.xxx.com:bigdata-xxx-platform/hdp-xxx-release.git
- 感知 remoteHadoop 的新数据
git fetch remoteHadoop
- 将新数据拉取到 origin
git merge remoteHadoop/master
- push到origin (使用idea时选用origin)
git push origin master
fork后的项目 如何同步原项目新增了的一个分支 test-new 呢?
- 为 bigdata/hadoop 的git地址 起个别名 remoteHadoop
git remote add remoteHadoop git@newgit.op.xxx.com:bigdata-xxx-platform/hdp-xxx-release.git
- 感知 remoteHadoop 的新分支
git fetch remoteHadoop
- 创建一个本地分支,追踪关系到远程 test-new
git checkout -b test-new remoteHadoop/test-new
- push到origin (使用idea时选用origin)
git push origin test-new
一些报错:
git操作时, 注意看控制台反馈是否成功了 是否有报错
-
如果报错文件名太长: 就输入
git config --system core.longpaths true
这条命令 -
git 找不到明明已存在的分支:
问题复现 :
git checkout xjx
报错:error: pathspec ‘xjx’ did not xmatch any file(s) known to git
解决方法:
git fetch
再切换分支: git checkout xjx
怎么撤销一个已经push了的commit?
3种方案:
-
git revert -n 版本号
会生成一条commit
-
git reset --hard HEAD^ 然后 git push -f origin 分支名
撤销最近一次的 commit
-
git rebase
squash
撤销中间某次的commit
误删了一个分支怎么办?
-
即基于某个版本号 进行创建一个新分支即可
git branch test-recover d46998d32a19c830f5917695306bd4bd82d29d62
-
推送到远端:
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过来
分支:
有这几种分支:
- 本地分支
- 远程 fork项目的 orgin分支
- 远程 原项目的 remoteHadoop分支
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jaY49Pd0-1670910688222)(img/image-20220912155456248.png)]
查看分支:
git branch 查看本地分支
git branch -r 查看远程分支
git branch -a 查看本地和远程所有分支
切换分支:
git checkout test
创建分支:
// 会基于当前分支拷贝 进行创建新的本地分支
git branch test // 创建并切换分支: git checkout -b test
// 将新分支推到远端
git push origin test:testOrigin
删除分支:
对本地分支:
git branch -D test
对远程origin分支:
- git push origin :testOrigin // 推送一个空分支过去, 即相当于删除
- git push origin --delete testOrigin
重命名分支:
对本地分支:
这个没意义:
git branch -m oldbranch newbranch
对远程origin分支:
- 删除 origin oldbranch
- 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错了如何回退?
- git log 查看版本号 按下 Enter 加载更多,按下 q 退出浏览 log
- git reset --hard 版本号 (在本地回退) git reset --hard HEAD^
- 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后的项目 如何同步原项目新增了的一个文件呢?
- 为 bigdata/hadoop 的git地址 起个别名 remoteHadoop
git remote add remoteHadoop git@newgit.op.xxx.com:bigdata-xxx-platform/hdp-xxx-release.git
- 感知 remoteHadoop 的新数据
git fetch remoteHadoop
- 将新数据拉取到 origin
git merge remoteHadoop/master
- push到origin (使用idea时选用origin)
git push origin master
fork后的项目 如何同步原项目新增了的一个分支 test-new 呢?
- 为 bigdata/hadoop 的git地址 起个别名 remoteHadoop
git remote add remoteHadoop git@newgit.op.xxx.com:bigdata-xxx-platform/hdp-xxx-release.git
- 感知 remoteHadoop 的新分支
git fetch remoteHadoop
- 创建一个本地分支,追踪关系到远程 test-new
git checkout -b test-new remoteHadoop/test-new
- push到origin (使用idea时选用origin)
git push origin test-new
一些报错:
git操作时, 注意看控制台反馈是否成功了 是否有报错
-
如果报错文件名太长: 就输入
git config --system core.longpaths true
这条命令 -
git 找不到明明已存在的分支:
问题复现 :
git checkout xjx
报错:error: pathspec ‘xjx’ did not xmatch any file(s) known to git
解决方法:
git fetch
再切换分支: git checkout xjx
怎么撤销一个已经push了的commit?
3种方案:
-
git revert -n 版本号
会生成一条commit
-
git reset --hard HEAD^ 然后 git push -f origin 分支名
撤销最近一次的 commit
-
git rebase
squash
撤销中间某次的commit
误删了一个分支怎么办?
-
即基于某个版本号 进行创建一个新分支即可
git branch test-recover d46998d32a19c830f5917695306bd4bd82d29d62
-
推送到远端:
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过来