Git基本命令


更新fork的远程仓库
假设:
① forked from 仓库地址:git@github.com:company/project.git
② 自己 fork 的仓库:git@github.com:username/project.git
添加远程仓库到本地并设定名为 upstream
git remote add upstream git@github.com:company/project.git显示本地的远程仓库地址
git remote -v
添加成功的话,将会看到如下类似信息:1
2
3
4origin git@github.com:username/project.git (fetch)
origin git@github.com:username/project.git (push)
upstream git@github.com:company/project.git (fetch)
upstream git@github.com:company/project.git (push)fetch 远程分支
git fetch upstream
fetch成功的话,将会看到如下类似信息:1
2
3
4
5
6
7
8
9
10remote: Enumerating objects: 76, done.
remote: Counting objects: 100% (76/76), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 166 (delta 72), reused 74 (delta 72), pack-reused 90
Receiving objects: 100% (166/166), 26.84 KiB | 37.00 KiB/s, done.
Resolving deltas: 100% (75/75), completed with 43 local objects.
From git@github.com:company/project.git
9410674..abb35b6 master -> upstream/master
0130b86..481332e release-1.8 -> upstream/release-1.8
0d988d6..2d9c4e7 release-1.9 -> upstream/release-1.9合并 fetch 的分支到本地 master
git merge upstream/master
合并成功的话,将会看到类似的下方信息:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16Updating 9410674..abb35b6
Fast-forward
docs/dev/table/catalog.zh.md | 366 ---------------------
docs/dev/table/hive/index.md | 16 +-
docs/dev/table/hive/index.zh.md | 14 +-
docs/dev/table/sqlClient.md | 2 +-
docs/dev/table/sqlClient.zh.md | 2 +-
.../test-scripts/kafka-common.sh | 2 +-
.../test_high_parallelism_iterations.sh | 26 +-
.../runtime/taskmanager/TaskAsyncCallTest.java | 14 +-
.../functions/sql/FlinkSqlOperatorTable.java | 11 +
.../planner/codegen/calls/StringCallGen.scala | 2 +-
.../planner/expressions/ScalarFunctionsTest.scala | 2 +-
.../planner/expressions/SqlExpressionTest.scala | 4 +
12 files changed, 53 insertions(+), 408 deletions(-)
delete mode 100644 docs/dev/table/catalog.zh.md查看log更新记录
git log
将会看到类似的下方信息:1
2
3
4
5
6
7
8
9
10
11
12
13commit 0e2eac4a39e1e543d8d79e607be117207b3fcfdb (HEAD -> master, upstream/master, origin/master, origin/HEAD)
Author: Stephane Nicoll <snicoll@pivotal.io>
Date: Sun Aug 25 05:08:17 2019 +0200
Upgrade Java 13 version in CI image
See gh-17839
commit 7d994e607d33f9b53c9d7f6d3ee71b77ed7b4dfb
Author: Stephane Nicoll <snicoll@pivotal.io>
Date: Sat Aug 24 08:22:28 2019 +0200
Restructure tests to exercise deprecated property in a dedicated test推送本地 master 分支到自己fork的仓库
git push origin master去自己 GitHub 的 project 库中核对更新内容
merge 失败,解决冲突
1
2
31. 查看当前状态
git st
2. 借助可视化工具,比如IDEA中的Git工具,项目右键Git -> Resolve Conflicts,接着在可视化窗口选择操作接收哪部分修改
修改 remote 仓库
1 | 1. 重设 remote 地址 |
项目太大导致克隆失败
在克隆一个项目到本地时,出现下方错误提示
error: RPC failed; curl 56 GnuTLS recv error (-9): A TLS packet with unexpected length was received.
fatal: the remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
这时应考虑在第一次克隆的时候,把克隆深度设置为1,然后再fetch,操作如下:
设置克隆深度为1
git clone https://github.com/username/project.git --depth 1进入项目再fetch
1
2
3
4
5
6
7
8
9
10
11cd project
git fetch --unshallow
2.1 如果下载时还是失败,可考虑将 git 配置中的 postBuffer增大一些,下载完毕后记得改回来即可,具体命令如下:
vim ~/.gitconfig
# 在文件末尾添加下方内容
[http]
postBuffer = 500m
[https]
postBuffer = 500m
撤销命令 git reset
Git ~ 和 ^ 的区别

参数说明
–soft
不会改变暂存区和工作区的文件,只是将 head 指针指向后面指定的 commit 处。同时将离开你待提交的更改文件,用git status可以查看;
–mixed
这是默认省略选项,重置暂存区文件,不改变工作区文件(比如已经保存的文件,但未被标记为待提交状态),同时会提示哪些文件还未被更新。
如果选中中指定了 -N ,那么被移除的文件将被标记为 intent-to-add;
–hard
重置暂存区和工作区文件,自上一阶段 commit 以来对工作树中跟踪文件的任何更改都将被丢弃掉。
撤销本地的 add操作
1 | git reset HEAD |
撤回本地的 commit
1 | # 撤回本地上一次commit |
git status 中文文件名正常显示
1 | # 未进行设置时,中文文件名会以8进制的字符编码显示 |
修改上一次 commit 注释
未 push 到远端
1 | git commit --amend |
已 push 到远端
1 | 确保push的时候,已经获取到最新内容 |
未添加 .gitignore 时
1 | 首先进入当前工作目录 |
删除远端分支
1 | 需要注意不支持当前工作分支 |
分支的创建和删除
1 | 创建 |
删除远程分支并清理本地记录
1 | 删除远程分支 |