ubuntu下git的配置和命令使用

目录

git安装

git配置

1、配置用户名和邮箱

2、配置SSH

         git的使用

一、主要

分支与合并

提交树上的移动

撤销分支

         *修改提交树

1、快速将分支复制到另一个HEAD指向的分支

2、交互式rebase(复制)

插入一个小点记录

只取一个提交记录

下面代码段中的串皆为终端命令  

git安装

sudo apt-get install -y git

ubuntu下git的配置和命令使用

git配置

1、配置用户名和邮箱

git config --global user.name  +用户名(github官网注册的用户名)
git config --global user.email  +邮箱(gitub官网注册绑定的邮箱)

完成后可查看配置:

git config --list   

2、配置SSH

不配置SSH的话,一些git@github...的URL不能下载,并且大文件传输通过SSH稳定。

生成SSH秘钥

ssh-keygen -t rsa -C "你的邮箱" 

接下来提示的地方一直按Enter就好,完成如下:

ubuntu下git的配置和命令使用

接下来查看生成秘钥:

cat  ~/.ssh/id_rsa.pub

ubuntu下git的配置和命令使用

这一大串就是。下面登陆github配置SSH:

登上后点击主页settings -> SSH and GPS keys -> New SSH key

ubuntu下git的配置和命令使用

将id_rsa.pub文件中的内容全部复制到key中,输入title,点击Add SSH key。

ubuntu下git的配置和命令使用

 完成如下:

ubuntu下git的配置和命令使用

最后检查下本地是否与github连接成功。输入命令若出现下图最后一行提示即为成功。

ubuntu下git的配置和命令使用


git的使用

这几天通关了Learn Git Branching学习git的使用,规整如下:

git部分基础指令
提交 git commit ...
创建 git branch ...
切换到分支 git checkout ...
合并 git merge ...
复制 git rebase ...
将分支复制到另一个分支 git cherry-pick ...(哈希值)
退回提交记录 git reset ...
退回提交记录并且多一个与上一级一样的分支 git revert ...
交互式rebase git rebase -i ...
建立标签 git tag ...(标签名)...(哈希值)
描述最近的标签 git descirbe ...
建立本地仓库克隆版本 git clone
从远程仓库获取数据(未修改本地文件) git fetch
抓取更新再合并到本地分支 git pull (fetch + merge)
将你的变更上传到指定的远程仓库,即发布成果 git push(fetch + rebase)

下面图中蓝色为初始状态,红色为目标状态。


一、主要

分支与合并

1、git merge

ubuntu下git的配置和命令使用

git branch bugFix
git checkout bugFix
git commmit
git checkout main
git commit
git merge bugFix

2、git rebase

ubuntu下git的配置和命令使用

git branch bugFix
git checkout bugFix
git commit
git checkout main
git commit
git checkout bugFix
git rebase main

提交树上的移动

1、HEAD直接移动

git checkout 哈希值

HEAD 总是指向当前分支上最近一次提交记录,大多数修改提交树的 git 命令都是从改变 HEAD 的指向开始的。

相对引用一(^):哈希值可以使用代替,如:C3=bugFix^,C1=bugFix^^

相对引用二(~):更简单,比如^^ => ~2,^^^ => ~3

ubuntu下git的配置和命令使用

git checkout C4

2、强制修改

git branch -f A B(让A指到B)

直接使用-f选项让分支指向另一个提交。例如:git branch -f main HEAD~3 就会将main分支强制指向HEAD的第3级父提交。


撤销分支

 方法一

git reset ...

ubuntu下git的配置和命令使用

 方法二

git revert ...

ubuntu下git的配置和命令使用

下面我们开改!

ubuntu下git的配置和命令使用

git reset local~1
git checkout C2
git checkout pushed
git revert HEAD

输入命令完成后就OK了

ubuntu下git的配置和命令使用


*修改提交树

1、快速将分支复制到另一个HEAD指向的分支

git cherry-pick ... ... (哈希值)

ubuntu下git的配置和命令使用

git cherry-pick C3 C4 C7

ubuntu下git的配置和命令使用

那如果你不清楚你想要的记录的哈希值呢?

2、交互式rebase(复制)

git rebase -i ... ...

如果你在命令后增加了-i 这个选项,git 会打开一个 UI 界面,并列出将要被复制到目标分支的备选提交记录,它还会显示每个提交记录的哈希值和提交说明,提交说明有助于你理解这个提交进行了哪些更改。

当 rebase UI界面打开时能做3件事:

  • 调整提交记录的顺序(通过鼠标拖放来完成)
  • 删除你不想要的提交(通过切换 pick 的状态来完成,关闭就意味着你不想要这个提交记录)
  • 允许你把多个提交记录合并成一个。

ubuntu下git的配置和命令使用

git rebase -i HEAD~4

输入指令后弹出页面ubuntu下git的配置和命令使用进行编辑修改如下

ubuntu下git的配置和命令使用 修改成功如下ubuntu下git的配置和命令使用


插入一个小点记录

(一个关卡打到最后突然脑子抽抽不知道这最后一步怎么操作了T-T

如果想要合并,让它从这样

ubuntu下git的配置和命令使用

 变成这样

ubuntu下git的配置和命令使用

只需要两步:

git checkout main

git merge caption

还想再简单一些也可以:

git branch -f main C3''


 只取一个提交记录

ubuntu下git的配置和命令使用

git rebase -i HEAD~3
git branch -f main bugFix

添加标签

git tag ...(标签名) ...(添加位置的哈希值)

ubuntu下git的配置和命令使用

git tag v0 C1
git tag v1 C2
git checkout c2

描述离你最近的标签

git describe ...

ubuntu下git的配置和命令使用


 多次rebase

ubuntu下git的配置和命令使用

 首先git rebase main bugFix,得到

ubuntu下git的配置和命令使用

 接着git rebase bugFix side

ubuntu下git的配置和命令使用

再进行git rebase side another

ubuntu下git的配置和命令使用

最后一步git branch -f main another,完成。

ubuntu下git的配置和命令使用

git rebase main bugFix
git rebase bugFix side
git rebase side another
git branch -f main another

两个父节点

上面有提到^和~。其实操作符 ^~ 一样,后面也可以跟一个数字

但是该操作符后面的数字与 ~ 后面的不同,并不是用来指定向上返回几代,而是指定合并提交记录的某个父提交。git 默认选择合并提交的是“第一个”父提交,而在操作符 ^ 后跟一个数字可以改变这一默认行为

上题目:

ubuntu下git的配置和命令使用

git branch bugWork HEAD~^2~

 二、远程仓库

 1、创建远程仓库 git clone

ubuntu下git的配置和命令使用

ubuntu下git的配置和命令使用

git clone

2、从远程仓库获取数据 git fetch

git fetch 做了些什么

  • 从远程仓库下载本地仓库中缺失的提交记录
  • 更新远程分支指针(如 o/main)

git fetch 实际上将本地仓库中的远程分支更新成了远程仓库相应分支最新的状态。

git fetch 不会做的事

git fetch不会改变你本地仓库的状态它不会更新你的 main 分支,也不会修改你磁盘上的文件。

它可能已经将进行这一操作所需的所有数据都下载了下来,但是并没有修改你本地的文件。所以, 可以将 git fetch 的理解为单纯的下载操作

ubuntu下git的配置和命令使用

git fetch

3、从远程仓库获取更新并合并到本地分支 git pull

 pull命令相当于命令fetch + merge的执行结果。比如远程仓库里的学习资料有了新内容,需要把新内容下载下来的时候,就可以使用git pull命令。事实上,git pull是相当于从远程仓库获取最新版本,然后再与本地分支merge(合并)

ubuntu下git的配置和命令使用

git pull

那我想要上传自己的内容怎么办呢?

4、 将变更上传到指定的远程仓库并在合并新提交记录 git push

与pull相反,这次我要对仓库进行上传的动作。

ubuntu下git的配置和命令使用

git commit
git commit 
git push

到这儿就差不多了,这两天摆得过分找个突破口,就把这个关过个七七八八。

ubuntu下git的配置和命令使用

ubuntu下git的配置和命令使用

 现在恢复状态了等等开始研究小组的任务,至于这个git远程仓库高级操作后期再跟进。

上一篇:android sdk installation is missing necessary packages. do you want to install the missing packages


下一篇:必会的git命令