Git学习随笔


Git是分布式版本控制系统,极其强大的分支管理

集中式版本控制系统

版本库是集中存放在中央服务器的,需联网才能工作

分布式版本控制系统

每个人电脑上都有一个完整的版本库,不需联网

在Git Bash中设置用户名和邮箱

$ git config --global user.name "LWP13226968149"
$ git config --global user.email "LWP13226968149@163.com"

注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

版本库(.git)

又名仓库(repository),可以简单理解成一个目录。这个目录里面的所有文件都可以被Git管理起来;

创建一个版本库并简单添加一个文件的步骤

首先,选择一个合适的地方,创建一个空目录:

$ mkdir JavaWeb
$ cd Javaweb
$ pwd

$ pwd 命令用于显示当前目录

仓库所在目录名最好不包含中文

第二步,通过git init命令把这个目录变成Git可以管理的仓库:

$ git init

第三步,新建一个.txt文件,将其放入learngit目录下,通过git add命令把文件添加到仓库中:

$ git add readme.txt

第四步,用命令git commit把文件提交到仓库中

$ git commit -m "lep is a handsome boy"

-m 后面的字符串是对本次提交的说明

git status查看仓库当前的状态

git diff查看修改

  • 要随时掌握工作区的状态,使用git status命令。
  • 如果git status告诉你有文件被修改过,用git diff可以查看修改内容。

git log显示从最近到最远的提交日志

git reset --hard <commit id>/<HEAD^> 回退版本

HEAD表示当前版本,(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

cat readme.txt查看readme.txt的内容

Git的版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD指针,当你回退版本的时候,Git仅仅是把HEAD从指向append GPL

┌────┐
│HEAD│
└────┘
   │
   └──> ○ append GPL
        │
        ○ add distributed
        │
        ○ wrote a readme file

改为指向add distributed

┌────┐
│HEAD│
└────┘
   │
   │    ○ append GPL
   │    │
   └──> ○ add distributed
        │
        ○ wrote a readme file

git reflog命令 记录了你的每一次命令

工作区和暂存区

工作区:在电脑上能看到的目录

暂存区:工作区中隐藏目录.git是Git的版本库,版本库中主要的有暂存区(stage)和Git为我们创建的第一个分支(master),以及指向master的一个指针HEAD

在这里插入图片描述

git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,

执行git commit就可以一次性把暂存区的所有修改提交到分支。

Git管理的是修改,而不是文件!

就好比你用git add命令添加了你刚刚对readme.txt文件的修改,在提交前你又更改了工作区里readme.txt文件的内容,此时用git commit提交 用git status命令查看状态会发现提交前第二次的修改并未提交

当用git add将文件添加到暂存区时,可以用

git restore --stage readme.txt命令撤销上传,回到git add前的状态

git restore readme.txt命令来放弃工作目录中的修改

删除文件

rm <file>可以把文件删了,当然,你也可以在目录下直接删了

这时,git中工作区和版本库就不一致了,git status命令会立刻告诉你哪些文件被删除了:

在这里插入图片描述

这时就有两种选择,第一:可以从版本库中拉取回来,把误删的文件恢复到最新版本

git restore test.txt

这样,被我删掉的test.txt就恢复了;

当然,你也可以让版本库和工作区一样也删掉该文件:

git rm test.txt

在这里插入图片描述

远程仓库

添加SSH密钥

由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要一点设置:

第1步,创建SSH Key。在用户 主目录(例如我的是C:\Users\Administrator)查看是否有.ssh目录;

如果有,则打开目录查看是否有id_rsaid_rsa.pub这两个文件,如果也已经有了,则直接到第2步;

如果没有,通过命令:

ssh-keygen -t rsa -C "LWP13226968149@163.com"

创建SSH Key(这里的邮箱是我的,该命令把邮箱改为你的就行)

创建完成后,用户主目录里会有.ssh目录,里面有id_rsaid_rsa.pub两个文件

id_rsa是私钥,id_rsa.pub是公钥

第2步,登录GitHub,在主界面右上角点击头像-Settings,打开后可以看到左边有一栏Account settings,找到SSH and GPG keys,然后,点new SSH Key,Title填方便记忆你喜欢的就行,在Key文本框里面粘贴id_rsa.pub文件里的内容,点Add Key,添加完毕

Gitee上也是一样的操作

添加远程库

登录GitHub,找到Create a new repo,创建一个新的仓库,命名随意你喜欢,成功在Github创建了Git仓库

现在把本地仓库与之关联:

$ git remote add origin git@github.com:LWP123456789/JavaWeb.git

把本地仓库的内容推送到Github仓库:

$ git push -u origin master

git push命令,实际上是把当前分支master推送到远程

第一次推送master分支时,使用-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

SSH警告

当你第一次使用Git的clone或者push命令连接GitHub时,会得到一个警告:

The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?

这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。

Git会输出一个警告,告诉你已经把GitHub的Key添加到本机的一个信任列表里了:

Warning: Permanently added 'github.com' (RSA) to the list of known hosts.

这个警告只会出现一次,后面的操作就不会有任何警告了。

删除远程库

$ git remote rm <name>

删除远程库前通常先查看远程库信息:

$ git remote -v

实际上是解除了本地和远程的绑定关系,要想真正完全删除远程库,登录到Github在库中Settings删除即可

克隆远程库

$ git clone <HTTPS/SSH/GitHub CLI>

在这里插入图片描述

如图,可以在Github仓库中保存下载地址

推送分支

把该分支上的所有本地提交推送到远程库,推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上:

$ git push origin master

如果要推送其他分支,比如dev,就改成:

$ git push origin dev

抓取分支

创建、查看、切换、合并分支的指令

查看分支:git branch

创建分支:git branch <name>

切换分支:git checkout <name>或者git switch <name>

创建+切换分支:git checkout -b <name>或者git switch -c <name>

合并某分支到当前分支:git merge <name>

删除分支:git branch -d <name>

git mergegit rebase 的区别

https://blog.csdn.net/liuxiaoheng1992/article/details/79108233

标签管理

查看标签

$ git tag

创建标签

$ git tag <name>

删除标签

$ git tag -d <name>

推送某个标签到远程

$ git push origin <tagname>

删除已推送到远程的标签

$ git tag -d <name>
$ git push origin:ref/tags/<names>

命令表

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值