Git基础知识:常见功能和命令行

文章目录

    • 1.Git介绍
    • 2.安装配置
      • 2.1 查看配置信息
    • 3.文件管理
      • 3.1 创建仓库
      • 3.2 版本回退
      • 3.3 工作流程
      • 3.4 撤销修改
      • 3.5 删除文件
    • 4.远程仓库
      • 4.1 连接远程库
      • 4.2 本地上传至远程
      • 4.3 从远程库克隆到本地
    • 5.分支管理
      • 5.1 创建分支
      • 5.2 删除分支
      • 5.3 合并分支+解决冲突

参考:
Git教程|菜鸟网络
Git教程—廖雪峰

1.Git介绍

  • 版本控制系统

Git 是一个开源的分布式版本控制系统,能敏捷高效地处理任何或小或大的项目,通常用于团队开发项目过程中对源码协同编辑和管理。Git 是 Linus Torvalds 在2005年为了帮助管理 Linux 内核开发,基于C开发的一个开源版本控制软件,方便其它内核开发者提交贡献和修改。什么是版本控制系统?比如用word写论文,每次修改重新保存另一个文件,最后会出现很多版本,如果导师再修改还需要来回发送文件合并新内容,这样会很麻烦。Git可以自动记录每次文件的改动,支持对文件的协同编辑,就不需要手动管理多个“版本”。

  • 分布式控制

其它版本控制工具 CVS, Subversion 均为集中式版本控制系统,版本库是集中存放在中央服务器的,个人从服务器中取得最新版本,修改结束后推送回中央服务器,类比图书馆,集中式版本控制系统需要连接网络才能工作。分布式版本控制系统没有“中央服务器”,每个人的电脑上都是一个完整的版本库,因此也不需要连接网络,安全性也很高。目前还有很多其它的版本控制系统,比如CVS, SVN, ClearCase等,Git是最流行的。

2.安装配置

Git 目前支持 Linux/Unix、Solaris、Mac和 Windows 平台上运行,可在git-scm官网上下载。以windows系统为例,gitforwindows镜像下载,安装后包括图形界面Git GUI和Git Bash

在这里插入图片描述
在这里插入图片描述

2.1 查看配置信息

  • git config --list

配置你的服务器的信息,git是分布式版本控制系统,因此每台机器需要设置用户名和邮件,使用global表明这台机器上的所有Git仓库都使用这个配置信息,也可以对某个仓库指定不同的用户名和邮件

$ git config --global user.name 'name'
$ git config --global user.email 'email'# 查看config
$ git config --list

3.文件管理

3.1 创建仓库

  • git init:初始化目录
  • git add:添加文件
  • git commit:提交文件

版本库也成为仓库(repository),相当于一个目录,这个目录里的所有文件都有能用Git管理,每个文件的修改历史都可以被追踪或还原。首先创建一个空目录mkdir,进入该文件cdpwd显示当前目录,通过git init将这个目录变成Git可以管理的仓库,目录下会增加一个.git目录,用于Git跟踪管理版本库。如果没看到可能是隐藏了,用ls -ah可以看见

$ mkdir Desktop/learngit
$ cd Desktop/learngit
$ pwd
/c/Users/pengy/Desktop/learngit$ git init
Initialized empty Git repository in C:/Users/pengy/Desktop/learngit/.git/$ ls -ah
./  ../  .git/

接着在learngit里面建立一个readme.txt文件,直接新建文件,然后通过git addgit commit将该文件提交到仓库。add告诉Git,将文件添加到仓库,可以反复使用,添加多个文件,commit将文件提交到仓库,-m是本次提交的说明。执行成功后会显示 1 file changed(一个文件被改动),2 insertions(+)(插入了两行内容)(readme.txt里的两行内容)。设置addcommit两步是因为commit可以一次性提交多个很多文件,可以多次使用add添加文件。

$ git add readme.txt
$ git commit -m 'wrote a readme file'
[master (root-commit) 643a68e] wrote a readme file1 file changed, 2 insertions(+)create mode 100644 readme.txt
go go go
run everyday

3.2 版本回退

  • git status:掌握仓库当前的状态
  • git diff:查看修改的内容
  • git log:查看从最近到最远的提交日志
  • git reset:回退到某个指定的版本
  • git reflog:查看命令历史,以便确定要回到未来的哪个版本

修改readme.txt文件的内容,改成如下内容,用git status命令查看结果

go go go
sleep everyday
$ git status
On branch master
Changes not staged for commit:(use "git add <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory)modified:   readme.txtno changes added to commit (use "git add" and/or "git commit -a")

git status可以让我们时刻掌握仓库当前的状态,上面结果表明,readme.txt被修改过了,但是还没有提交修改。如果想要查看具体修改的内容,用git diff命令,可以看出将run修改为了sleep

$ git diff readme.txt
diff --git a/readme.txt b/readme.txt
index 9fbbc68..ab0fdda 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,2 @@go go go
-run everyday
\ No newline at end of file
+sleep everyday
\ No newline at end of file

接着用前面提到的方法提交修改

$ git add readme.txt
$ git status
On branch master
Changes to be committed:(use "git restore --staged <file>..." to unstage)modified:   readme.txt
$ git commit -m 'change sleep'
[master 3149571] change sleep1 file changed, 1 insertion(+), 1 deletion(-)$ git status
On branch master
nothing to commit, working tree clean

提交后显示没有需要提交的修改,工作目录working tree是干净。
按照前面的修改方法再修改文件如下

go go go
sleep everyday
young and rich
$ git add readme.txt
$ git commit -m 'append line'
[master 0efc261] append line1 file changed, 2 insertions(+), 1 deletion(-)

这样对文件不停的修改,每次修改提交都会保留一个当前内容,方面后续恢复,如同备份,目前readme.txt已经修改了三次

go go go
run everydaygo go go
sleep everydaygo go go
sleep everyday
young and rich

git log查看从最近到最远的提交日志

$ git log
commit 0efc2612b8fbf89a036e4358c4a0c83f9afddffc (HEAD -> master)
Author: bujibujibiu <123456@gmail.com> 
Date:   Wed May 24 14:37:07 2023 +0800append linecommit 3149571d74bc882218458f638eb119dae24e1a57
Author: bujibujibiu <123456@gmail.com>
Date:   Wed May 24 14:26:39 2023 +0800change sleepcommit 643a68e9294e906037cb37d3c120dac6f02a2127
Author: bujibujibiu <carrot12358@gmail.com>
Date:   Wed May 24 11:31:55 2023 +0800wrote a readme file

在图形化Git Gui中可以清楚看到提交历史
在这里插入图片描述
Git中Head表示当前版本append lineHEAD^表示上一个,HEAD~100表示上100个,用git reset回退到上一个版本change sleep,查看当前文件内容,变成了第二个版本

$ git reset --hard HEAD^
HEAD is now at 3149571 change sleep
$ cat readme.txt
go go go
sleep everyday

再次git log会发现只有两条记录

$ git log
commit 3149571d74bc882218458f638eb119dae24e1a57 (HEAD -> master)
Author: bujibujibiu <carrot12358@gmail.com>
Date:   Wed May 24 14:26:39 2023 +0800change sleepcommit 643a68e9294e906037cb37d3c120dac6f02a2127
Author: bujibujibiu <carrot12358@gmail.com>
Date:   Wed May 24 11:31:55 2023 +0800wrote a readme file

如果想要回到最新的那个版本,就找到commit id,版本号写前几位,Git会自动寻找对应的版本,可以发现又回到最新的版本

$ git reset --hard 0efc
HEAD is now at 0efc261 append line$ cat readme.txt
go go go
sleep everyday
young and rich

为了找到版本号,可以用git reflog记录每一次的命令

$ git reflog
0efc261 (HEAD -> master) HEAD@{0}: reset: moving to 0efc
3149571 HEAD@{1}: reset: moving to HEAD^
0efc261 (HEAD -> master) HEAD@{2}: commit: append line
3149571 HEAD@{3}: commit: change sleep
643a68e HEAD@{4}: commit (initial): wrote a readme file

3.3 工作流程

  • 工作区—暂存区—版本库分支

在前文中提到过提交修改文件需要通过add和commit两步,流程如下,工作区是电脑里能看到的目录,版本库(Repository)是文件夹里的隐藏目录.git,不算工作区,Git版本库中包含一个暂存区(index/stage),还有Git自动创建的第一个分支master,以及指向master的一个指针叫HEADgit add将文件修改添加到暂存区,git commit把暂存区的所有内容提交到当前分支master
在这里插入图片描述
比如在readme.txt里增加一行内容,同时新建文件LICENSE.txt,git status表明修改了一个文件,新增了一个文件为Untracked files。然后git add这两个文件,LICENSE.txt和readme.txt被放到了暂存区,git commit将两个文件提交到master分支

$ git status
On branch master
Changes not staged for commit:(use "git add <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory)modified:   readme.txtUntracked files:(use "git add <file>..." to include in what will be committed)LICENSE.txtno changes added to commit (use "git add" and/or "git commit -a")
$ git add readme.txt
$ git add LICENSE.txt
$ git status
On branch master
Changes to be committed:(use "git restore --staged <file>..." to unstage)new file:   LICENSE.txtmodified:   readme.txt
$ git commit -m 'stage works'
[master 2312846] stage works2 files changed, 2 insertions(+), 1 deletion(-)create mode 100644 LICENSE.txt
$ git status
On branch master
nothing to commit, working tree clean

Git管理的是每一次修改,比如按照下面操作:修改readme.txt—add—修改readme.txt—commit—status,commit提交的只是第一次修改的内容,add将第一次修改放在暂存区,可见Git管理的是每一次修改,而不是文件本身。

# (1)修改readme.txt,新增track changes
$ cat readme.txt
go go go
sleep everyday
young and rich
crzay life
track changes# (2)readme.txt存放在暂存区
$ git add readme.txt# (3)再次修改readme.txt,变成track changes second
$ cat readme.txt
go go go
sleep everyday
young and rich
crzay life
track changes second# (4)提交暂存区里的readme.txt
$ git commit -m 'track changes'
[master bd56840] track changes1 file changed, 2 insertions(+), 1 deletion(-)# (5)显示当前状态,第二次修改的readme.txt没有被提交
$ git status
On branch master
Changes not staged for commit:(use "git add <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory)modified:   readme.txtno changes added to commit (use "git add" and/or "git commit -a")

git diff HEAD -- readme.txt可以看到工作区和版本库里的readme.txt区别

$ git diff HEAD -- readme.txt
diff --git a/readme.txt b/readme.txt
index a8981d7..a7d5c05 100644
--- a/readme.txt
+++ b/readme.txt
@@ -2,4 +2,4 @@ go go gosleep everydayyoung and richcrzay life
-track changes
\ No newline at end of file
+track changes second
\ No newline at end of file

3.4 撤销修改

  • git checkout -- file:撤销file工作区的修改
  • git reset HEAD file:撤销暂存区的修改

如果要撤销对工作区的修改,使用git checkout -- file

# (1)readme.txt文件新增stupid day
$ cat readme.txt
go go go
sleep everyday
young and rich
crzay life
track changes second
no hope
stupid day# (2)删除工作区的修改
$ git checkout -- readme.txt#(3)stupid day已经删除
$ cat readme.txt
go go go
sleep everyday
young and rich
crzay life
track changes second
no hope

如果已经add到暂存区,使用git reset命令把暂存区的修改回退到工作区,再用checkout丢弃工作区的修改

# (1)修改readme.txt新增stupid day
$ cat readme.txt
go go go
sleep everyday
young and rich
crzay life
track changes second
no hope
stupid day# (2)add到暂存区,状态为待提交
$ git add readme.txt
$ git status
On branch master
Changes to be committed:(use "git restore --staged <file>..." to unstage)modified:   readme.txt# (3)把暂存区的修改回退到工作区,状态为待add
$ git reset HEAD readme.txt
Unstaged changes after reset:
M       readme.txt$ git status
On branch master
Changes not staged for commit:(use "git add <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory)modified:   readme.txtno changes added to commit (use "git add" and/or "git commit -a")# (4)checkout撤销工作区的修改
$ git checkout -- readme.txt$ cat readme.txt
go go go
sleep everyday
young and rich
crzay life
track changes second
no hope

已经提交了不合适的修改到版本库时,想要撤销本次提交,可使用前面的版本回退,不过前提是没有推送到远程库

3.5 删除文件

  • git rm:删除文件
  • git checkout -- file:恢复工作区file文件

假设新增一个文件并提交到了版本库,现在需要删除这个文件,首先用rm删除工作区中的文件,然后用使用git rm删除版本库中文件

# (1)新增文件test.txt,并add和commit到版本库
$ git add test.txt
$ git commit -m 'add test.txt'
[master 33f52c0] add test.txt1 file changed, 1 insertion(+)create mode 100644 test.txt# (2)使用rm命令直接删除工作区的test.txt
$ rm test.txt
$ git status
On branch master
Changes not staged for commit:(use "git add/rm <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory)deleted:    test.txtno changes added to commit (use "git add" and/or "git commit -a")# (3)使用git rm删除版本库中的test.txt并commit
$ git rm test.txt
rm 'test.txt'
$ git commit -m 'delete test.txt'
[master 2e755a3] delete test.txt1 file changed, 1 deletion(-)delete mode 100644 test.txt

如果用rm删除了工作区中的某个文件,但是发现删错了,可以通过checkout用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”

# (1)新增文件test.txt,并add和commit到版本库
$ git add test.txt
$ git commit -m 'add test new'
[master 943447f] add test new1 file changed, 1 insertion(+)create mode 100644 test.txt# (2)使用rm命令直接删除工作区的test.txt
$ cat test.txt
for test
$ rm test.txt
$ cat test.txt
cat: test.txt: No such file or directory# (3)checkout 恢复工作区的文件
$ git checkout -- test.txt
$ cat test.txt
for test

4.远程仓库

4.1 连接远程库

Git是一种分布式版本控制工具,用于管理多版本项目。Github和Gitlab都是基于git的代码托管平台,Github一般用于托管开源项目,GitLab比较私密,适合企业。本地仓库可以和远程仓库之间传输需要SSH加密。以github为例。首先在本地Git配置config信息,在Github上用该邮件注册账号。

$ git config --global user.name 'name'
$ git config --global user.email 'email'

先通过cd ~/.ssh查看是否已经配置SSH,如果没有任何文件,则输入一下内容配置SSH,一直回车,密码可以不设置

$ ssh-keygen -t -rsa -C 'HAPPY@HAPPY.com'
Generating public/private rsa key pair.

重新打开.ssh目录,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以公开,将id_rsa.pub内容复制到Github的SSH key设置中

$ cd ~/.ssh
$ ls
id_rsa  id_rsa.pub
$ cat id_rsa.pub

判断是否连接成功,输入下面语句显示You’ve successfully authenticated, but GitHub does not provide shell access

$ ssh git@github.com

4.2 本地上传至远程

  • git remote add origin *********.git:连接远程仓库
  • git push:将本地分支的内容推送到远程库
  • git remote -v:查看远程仓库信息
  • git remote rm <name>:删除远程仓库

如果通过前面的3.1创建本地仓库后,想要在GIthub或者Gitlab中也创建一个Git仓库,并且两个仓库远程同步,首先在GIthub中Create repository创建一个空的Git仓库,然后,把本地仓库的内容推送到GitHub仓库,在本地的仓库下运行命令

$ git remote add origin *********.git

*********就是你的远程仓库地址,添加后,远程库的名字就是origin,这是Git默认的叫法。用git remote -v可以查看远程库信息

pengy@LAPTOP-7A77J86V MINGW32 ~/Desktop/CPCS (master)
$ git remote -v
origin  https://github.com/bujibujibiu/learngit.git (fetch)
origin  https://github.com/bujibujibiu/learngit.git (push)

如果添加的时候地址写错了,或者就是想删除远程库,可以用git remote rm <name>命令

$ git remote rm origin

把本地库的所有内容推送到远程库上用git push,这样matser分支的内容就推送到Github中,以后每次修改都可以通过这个命令更新远程仓库

$ git push origin master

如果是远程库和本地库都初始化了,现在需要同步,那么首先要将远程库pull到本地,然后push。

$ git pull origin master

出现fatal: refusing to merge unrelated histories错误就用下面方法强制合并

pengy@LAPTOP-7A77J86V MINGW32 ~/Desktop/learngit(master)
$ git pull origin master --allow-unrelated-histories
From https://github.com/bujibujibiu/learngit* branch            master     -> FETCH_HEAD
Merge made by the 'ort' strategy.README.md | 3 +++1 file changed, 3 insertions(+)create mode 100644 README.md
pengy@LAPTOP-7A77J86V MINGW32 ~/Desktop/learngit(master)
$ git push origin master
Enumerating objects: 9, done.
Counting objects: 100% (9/9), done.
Delta compression using up to 12 threads
Compressing objects: 100% (7/7), done.
Writing objects: 100% (8/8), 95.42 KiB | 13.63 MiB/s, done.
Total 8 (delta 1), reused 0 (delta 0), pack-reused 0
To https://github.com/bujibujibiu/learngit.git7ec29b2..fb58fc0  master -> master

4.3 从远程库克隆到本地

  • git clone *****:克隆远程库至本地文件

4.2是先有本地仓库,后有远程仓库,如何关联远程库,假设现在先有远程仓,需要克隆到本地。比如首先创建Github仓库,勾选Initialize this repository with a README,这样GitHub会自动为创建一个README.md文件。下一步是用命令git clone克隆一个本地库。

$ git clone https://github.com/bujibujibiu/learngit.git

这样本地就会出现一个learngit的库,并且有README.md文件

5.分支管理

5.1 创建分支

  • git branch:查看分支
  • git branch name:新建分支
  • git checkout (branchname):切换分支命令
  • git checkout -b (branchname) :创建新分支并立即切换到该分支

Git管理修改是将这些提交串成时间线,也就是一个分支,在Git初始化时自动创建了一个分支master,当前版本HEAD指向mastermaster指向最新的提交点。每次提交,master分支都会向前移动一步,随着不断提交,master分支的线也越来越长。如果创建新的分支比如dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上。从现在开始,对工作区的修改和提交就是针对dev分支了,比如新提交一次后,dev指针往前移动一步,而master指针不变。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如下:创建文件夹learngit,通过3.1的操作新建仓库并添加readme.txt文件

$ cd learngit
$ git init
Initialized empty Git repository in C:/Users/pengy/Desktop/learngit/.git/$ git status
On branch masterNo commits yetUntracked files:(use "git add <file>..." to include in what will be committed)readme.txtnothing added to commit but untracked files present (use "git add" to track)$ git add .$ git commit -m 'create readme file'
[master (root-commit) dd8bad0] create readme file1 file changed, 6 insertions(+)create mode 100644 readme.txt$ git status
On branch master
nothing to commit, working tree clean$ git branch
* master

然后新建分支test,切换到test分支

~/Desktop/learngit (master)
$ git branch test~/Desktop/learngit (master)
$ git branch
* mastertest~/Desktop/learngit (master)
$ git checkot test
git: 'checkot' is not a git command. See 'git --help'.The most similar command ischeckout~/Desktop/learngit (master)
$ git checkout test
Switched to branch 'test'

test分支下新增文件夹test.txt,ls发现在test分支下有两个文件readme.txt和test.txt,再切回到master分支,只剩下readme.txt文件

~/Desktop/learngit (test)
$ ls
readme.txt~/Desktop/learngit (test)
$ echo 'runoob.com' > test.txt~/Desktop/learngit (test)
$ ls
readme.txt  test.txt~/Desktop/learngit (test)
$ git add .
warning: in the working copy of 'test.txt', LF will be replaced by CRLF the next time Git touches it~/Desktop/learngit (test)
$ git commit -m 'add test file'
[test d20d68d] add test file1 file changed, 1 insertion(+)create mode 100644 test.txt~/Desktop/learngit (test)
$ ls
readme.txt  test.txt~/Desktop/learngit (test)
$ git checkout master
Switched to branch 'master'~/Desktop/learngit (master)
$ ls
readme.txt

使用git checkout -b (branchname) 新建分支newtest并切换到该分支,文件和master一样

~/Desktop/learngit (master)
$ git checkout -b newtest
Switched to a new branch 'newtest'~/Desktop/learngit (newtest)
$ ls
readme.txt

5.2 删除分支

  • git branch -d (branchname):删除分支

使用git branch -d (branchname)删除前面新建的newtest分支,注意要切换到别的分支,不能删除当前所在分支

~/Desktop/learngit (newtest)
$ git branchmaster
* newtesttest~/Desktop/learngit (newtest)
$ git branch -d newtest
error: Cannot delete branch 'newtest' checked out at 'C:/Users/pengy/Desktop/learngit'~/Desktop/learngit (newtest)
$ git checkout master
Switched to branch 'master'~/Desktop/learngit (master)
$ git branch -d newtest
Deleted branch newtest (was dd8bad0).~/Desktop/learngit (master)
$ git branch* mastertest

5.3 合并分支+解决冲突

  • git merge (branchname):将任何分支合并到当前分支中(可以不是主分支)

master分支中新建文件runoob.php,并且commit,这样master分支中有两个文件readme.txt和runoob.php,test分支中有两个文件readme.txt和test.txt

~/Desktop/learngit (master)
$ git branch
* mastertest~/Desktop/learngit (master)
$ touch runoob.php~/Desktop/learngit (master)
$ git add .~/Desktop/learngit (master)
$ git commit -m 'add runoob file'
[master 3dcca8c] add runoob file1 file changed, 0 insertions(+), 0 deletions(-)create mode 100644 runoob.php~/Desktop/learngit (master)
$ ls
readme.txt  runoob.php~/Desktop/learngit (master)
$ git checkout test
Switched to branch 'test'~/Desktop/learngit (test)
$ ls
readme.txt  test.txt

合并test分支到master分支中,假设两个分支下都有test.txt文件且不一样,合并会产生冲突

pengy@LAPTOP-7A77J86V MINGW32 ~/Desktop/learngit (test)
$ cat test.txt
runoob.com
study
new
amazing
HAPPYpengy@LAPTOP-7A77J86V MINGW32 ~/Desktop/learngit (master)
$ cat test.txt
runoob.com
study
new
new againpengy@LAPTOP-7A77J86V MINGW32 ~/Desktop/learngit (master)
$ git merge test
Auto-merging test.txt
CONFLICT (content): Merge conflict in test.txt
Automatic merge failed; fix conflicts and then commit the result.

打开test.txt会看到冲突内容

pengy@LAPTOP-7A77J86V MINGW32 ~/Desktop/learngit (master|MERGING)
$ cat test.txt
runoob.com
study
new
<<<<<<< HEAD
new again
=======
amazing
HAPPY
>>>>>>> test

Git通常会在进行合并操作时生成MERGE_MSG交换文件,以保存合并消息的内容。如果Git在工作目录下找到了这个交换文件,说明上一次的合并操作没有成功完成,编辑器的进程可能意外终止。输入rm .git/.MERGE_MSG.swp

根据提示修改master分支下的test.txt文件,重新commit后显示[master 2bf0895]表示成功

$ git status
On branch master
You have unmerged paths.(fix conflicts and run "git commit")(use "git merge --abort" to abort the merge)Unmerged paths:(use "git add <file>..." to mark resolution)both modified:   test.txtno changes added to commit (use "git add" and/or "git commit -a")pengy@LAPTOP-7A77J86V MINGW32 ~/Desktop/learngit (master|MERGING)
$ git add .pengy@LAPTOP-7A77J86V MINGW32 ~/Desktop/learngit (master|MERGING)
$ git commit -m 'merge change'
[master 2bf0895] merge changepengy@LAPTOP-7A77J86V MINGW32 ~/Desktop/learngit (master)
$ git status
On branch master
nothing to commit, working tree clean

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/75834.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue前端框架入门

文章目录 Vue快速入门Vue指令生命周期 Vue 经过一小段时间学习 我认为vue就是在原js上进行的一个加强 简化JS中的DOM操作 vue是分两个层的 一个叫做视图层(View)&#xff0c;你可以理解为展现出来的前端页面 一个叫数据模型层(Model),包含数据和一些数据的处理方法 MVVM就是实…

Mybatis 实体类属性名和表中字段名不一致怎么处理

一. 前言 最近耀哥有学生出去面试&#xff0c;被问到 “Mybatis实体类的属性名和表中的字段名不一致该怎么处理&#xff1f;”&#xff0c;这其实是一个很经典的面试题&#xff0c;接下来耀哥就为大家详细解析一下这道面试题。 二. 分析 2.1 实体类和字段名不一致所带来的后果…

汽车智能化再掀新热潮!「中央计算架构」进入规模量产周期

中央计算区域控制的新一代整车电子架构&#xff0c;已经成为车企继电动化、智能化&#xff08;功能上车&#xff09;之后&#xff0c;新一轮竞争的焦点。 如果说智能化的1.0阶段&#xff0c;是智能驾驶智能座舱的争夺战&#xff1b;那么&#xff0c;即将进入的2.0阶段&#xff…

postman----传参格式(json格式、表单格式)

本文主要讲解postman使用post请求方法的2中传参方式&#xff1a;json格式、表单格式 首先了解下&#xff0c;postman进行接口测试&#xff0c;必须条件是&#xff1a; ♥请求地址 ♥请求协议 ♥请求方式 ♥请求头 ♥参数 json格式 先看一下接口文档&#xff0c;根据接口文档&…

测试人员简单使用Jenkins

一、测试人员使用jenkins干什么&#xff1f; 部署测试环境 二、相关配置说明 一般由开发人员进行具体配置 1.Repository URL&#xff1a;填写git地址 2.填写开发分支&#xff0c;测试人员可通过相应分支进行测试环境的构建部署 当多个版本并行时&#xff0c;开发人员可以通过…

【Liux下6818开发板(ARM)】触摸屏

(꒪ꇴ꒪ ),hello我是祐言博客主页&#xff1a;C语言基础,Linux基础,软件配置领域博主&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff01;送给读者的一句鸡汤&#x1f914;&#xff1a;集中起来的意志可以击穿顽石!作者水平很有限&#xff0c;如果发现错误&#x…

Unity数字可视化学校_昼夜(二)

1、时间设置&#xff1a; 2、新建夜晚 3、新建侧置球&#xff08;BOX&#xff09;,测试灯光强度 降低亮度 色调&#xff1a;冷色调 4、自发光 新建shader 灯光控制 道路线&#xff1a; 建筑&#xff1a; 夜晚加灯光&#xff1a; 玻璃&#xff1a; 加大灯光数量&#xff1a; 边缘…

AI量化模型预测——baseline学习笔记

一、赛题理解 1. 赛题名称 AI量化模型预测 2. 赛题理解 本赛事是一个量化金融挑战&#xff0c;旨在通过大数据与机器学习的方法&#xff0c;使用给定的训练集和测试集数据&#xff0c;预测未来中间价的移动方向。参赛者需要理解市场行为的原理&#xff0c;创建量化策略&#…

【java安全】无Commons-Collections的Shiro550反序列化利用

文章目录 【java安全】无Commons-Collections的Shiro550反序列化利用Shiro550利用的难点CommonsBeanutils1是否可以Shiro中&#xff1f;什么是serialVersionUID&#xff1f;W 无依赖的Shiro反序列化利用链POC 【java安全】无Commons-Collections的Shiro550反序列化利用 Shiro5…

『HarmonyOS』万物互联,分布式操作系统

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位喜欢写作&#xff0c;计科专业大二菜鸟 &#x1f3e1;个人主页&#xff1a;starry陆离 &#x1f552;首发日期&#xff1a;2022年7月5日星期二 &#x1f30c;上期文章&#xff1a;『首期文章』 &#x1f4da;订阅专栏&…

从0到1框架搭建,Python+Pytest+Allure+Git+Jenkins接口自动化框架(超细整理)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 接口测试是对系统…

将word每页页眉单独设置

在进行论文排版的时候&#xff0c;总是会出现页眉的页码设置问题&#xff0c;比如出现奇数或偶数页码一致&#xff0c;尝试将前面页码改掉&#xff0c;后面再修改前面也进行了变动&#xff0c;将每页页眉单独设置&#xff1a; &#xff08;1&#xff09;在第一页的最后一行输入…

【雕爷学编程】MicroPython动手做(29)——物联网之SIoT

知识点&#xff1a;什么是掌控板&#xff1f; 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片&#xff0c;支持WiFi和蓝牙双模通信&#xff0c;可作为物联网节点&#xff0c;实现物联网应用。同时掌控板上集成了OLED…

【2023年电赛】运动目标控制与自动追踪系统(E 题)最简单实现

本方案的思路是最简单的不涉及复杂算法&#xff1a;识别矩形框&#xff0c;标记矩形框&#xff0c;输出坐标和中心点&#xff0c;计算长度&#xff0c;控制舵机移动固定长度&#xff01;仅供完成基础功能参考&#xff0c;不喜勿喷&#xff01; # 实现运动目标控制与自动追踪系…

企业上云实施路线图

企业上云步骤主要分为规划、设计、实施、验证、运维五个阶段。https://articles.e-works.net.cn/cloud/article144684.htm

JVM基础篇-直接内存

JVM基础篇-直接内存 什么是直接内存? 直接内存( 堆外内存 ) 指的是 Java 应用程序通过直接方式从操作系统中申请的内存,这块内存不属于jvm 传统方式读取文件 首先会从用户态切换到内核态&#xff0c;调用操作系统函数从磁盘读取文件&#xff0c;读取一部分到操作系统缓冲区…

Azure pipeline自动化打包发布

pipeline自动化&#xff0c;提交代码后&#xff0c;就自动打包&#xff0c;打包成功后自动发布 第一步 pipeline提交代码后&#xff0c;自动打包。 1 在Repos,分支里选择要触发的分支&#xff0c;这里选择cn_china,对该分支设置分支策略 2 在生产验证中增加新的策略 3 在分支安…

2023华数杯数学建模C题完整论文,包括每个问题的代码

目录 摘要 2.1 问题 1 的问题分析 2.2 问题 2 的问题分析 2.3 问题 3 的问题分析 完成版论文见此 摘要 问题一&#xff0c;我们使用了390名3至12个月婴儿及其母亲的相关数据&#xff0c;探讨了母亲的 身体和心理指标对婴儿的行为特征和睡眠质量的影响。我们首先进行了描述…

【JavaEE初阶】博客系统后端

文章目录 一. 创建项目 引入依赖二. 设计数据库三. 编写数据库代码四. 创建实体类五. 封装数据库的增删查改六. 具体功能书写1. 博客列表页2. 博客详情页3. 博客登录页4. 检测登录状态5. 实现显示用户信息的功能6. 退出登录状态7. 发布博客 一. 创建项目 引入依赖 创建blog_sy…

Dockerfile构建lamp镜像

1、构建目录 [rootdocker ~]# mkdir compose_lamp [rootdocker ~]# cd compose_lamp/ 2、编写Docekerfile [rootdocker compose_lamp]# vim Dockerfile #基础镜像 FROM centos:7#维护该镜像的用户信息 MAINTAINER Crushlinux <crushlinux163.com>#安装httpd RUN yum -…