ubuntu下git的配置和命令使用

目录

git安装

git配置

1、配置用户名和邮箱

2、配置SSH

         git的使用

一、主要

分支与合并

提交树上的移动

撤销分支

         自由修改提交树

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

2、交互式rebase(复制)

插入一个小点记录

只取一个提交记录

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

git安装

sudo apt-get install -y 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就好,完成如下:

接下来查看生成秘钥:

cat  ~/.ssh/id_rsa.pub

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

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

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

 完成如下:

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


git的使用

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

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

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


一、主要

分支与合并

1、git merge

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

2、git rebase

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

git checkout C4

2、强制修改

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

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


撤销分支

 方法一

git reset ...

 方法二

git revert ...

下面我们开改!

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

输入命令完成后就OK了


自由修改提交树

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

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

git cherry-pick C3 C4 C7

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

2、交互式rebase(复制)

git rebase -i ... ...

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

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

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

git rebase -i HEAD~4

输入指令后弹出页面进行编辑修改如下

修改成功如下


插入一个小点记录

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

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

 变成这样

只需要两步:

git checkout main

git merge caption

还想再简单一些也可以:

git branch -f main C3''


 只取一个提交记录

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

添加标签

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

git tag v0 C1
git tag v1 C2
git checkout c2

描述离你最近的标签

git describe ...


 多次rebase

 首先git rebase main bugFix,得到

 接着git rebase bugFix side

再进行git rebase side another

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

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

两个父节点

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

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

上题目:

git branch bugWork HEAD~^2~

 二、远程仓库

 1、创建远程仓库 git clone

git clone

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

git fetch 做了些什么

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

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

git fetch 不会做的事

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

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

git fetch

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

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

git pull

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

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

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

git commit
git commit 
git push

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

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

  • 4
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

颜 然

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值