广西建设教育网站,常德论坛网,无极在线招工招聘信息,好的公司网站建设版本控制器git 初始Gitgit的安装git的基本使用初始化本地仓库配置本地仓库三区协作添加---add修改文件--status|diff版本回退--reset撤销修改删除文件 初始Git
为了能够更⽅便我们管理不同版本的⽂件#xff0c;便有了版本控制器。所谓的版本控制器#xff0c;就是⼀个可以记… 版本控制器git 初始Gitgit的安装git的基本使用初始化本地仓库配置本地仓库三区协作添加---add修改文件--status|diff版本回退--reset撤销修改删除文件 初始Git
为了能够更⽅便我们管理不同版本的⽂件便有了版本控制器。所谓的版本控制器就是⼀个可以记录⼯程的每⼀次改动和版本迭代的⼀个管理系统同时也⽅便多⼈协同作业。 目前最主流的版本控制器就是Git。Git可以控制电脑上所有格式的文件例如doc、excel、dwg、dgn、rvt等等。对于开发⼈员来说Git最重要的就是可以帮助我们管理软件开发项⽬中的源代码文件
git的安装
Centos7.9下安装git
查看是否安装git
git --version
//没有则使用yum安装
sudo yum -y install gitgit的基本使用
初始化本地仓库
git init执行完毕后会生成一个隐藏的.git文件内含有配置信息
配置本地仓库
当安装Git后⾸先要做的事情是设置你的用户名、e-mail地址
#设置配置
[wmhpDaD gitcode]$ git config user.name wmh
[wmhpDaD gitcode]$ git config user.email 66666qq.com
#查看配置
[wmhpDaD gitcode]$ git config -l
user.email66666qq.com
user.namewmh
core.repositoryformatversion0
core.filemodetrue
core.barefalse
core.logallrefupdatestrue#删除配置
[wmhpDaD gitcode]$ git config --unset user.name
[wmhpDaD gitcode]$ git config --unset user.email
[wmhpDaD gitcode]$ git config -l
core.repositoryformatversion0
core.filemodetrue
core.barefalse
core.logallrefupdatestrue
配置全局生效 全局的配置必须使用全局的删除
[wmhpDaD gitcode]$ git config --global user.name wmh
[wmhpDaD gitcode]$ git config --global user.email 66666qq.com[wmhpDaD gitcode]$ git config --global --unset user.name
[wmhpDaD gitcode]$ git config --global --unset user.email三区协作 .git版本库虽然在工作区但是不属于工作区 code工作区用来写代码的文件或者是目录
刚创建的myfile是不会被git管理起来的需要先add到暂存区然后commit到版本库的master分支下暂存区和master下存储的都是git对象
添加—add
git add . #把当前目录所有文件添加到暂存区
git commit -m “注释” #把暂存区内容交付给版本库
git log #显示日志[wmhpDaD code]$ git add .
[wmhpDaD code]$ git commit -m first file
[master (root-commit) bd3f11d] first file1 file changed, 0 insertions(), 0 deletions(-)create mode 100644 myfile
[wmhpDaD code]$ touch myfile2
[wmhpDaD code]$ git add myfile2
[wmhpDaD code]$ git commit -m add new file
[master 0857536] add new file1 file changed, 0 insertions(), 0 deletions(-)create mode 100644 myfile2
[wmhpDaD code]$ git log
commit 0857536013e6b5c890d2fa0ba454041e30bfab15
Date: Wed Aug 9 17:16:36 2023 0800add new filecommit bd3f11df093e0e559697f0a2989a32843c30783b
Date: Wed Aug 9 17:15:41 2023 0800first file
[wmhpDaD code]$ git log --prettyonline
fatal: invalid --pretty format: online
[wmhpDaD code]$ git log --prettyoneline
0857536013e6b5c890d2fa0ba454041e30bfab15 add new file
bd3f11df093e0e559697f0a2989a32843c30783b first file观察.git文件结构变化 在.git文件里可以看到出现了index(暂存区)前面说道HEAD指向master通过cat .git/HEAD查到了master;接着查看master内容结果是一串哈希摘要并且与object第一个字符串相同其实就是git对象通过深度查阅哈希摘要发现有tree、parent等字段parent对应的是上一个commit对象再细细追究就是修改的文件内容
修改文件–status|diff
git status 命令⽤于查看在你上次提交之后是否有对⽂件进⾏再次修改 git diff [file] 命令⽤来显示暂存区和⼯作区文件的差异 也可以使⽤ git diff HEAD – [file] 命令来查看版本库和⼯作区⽂件的区别 当使用git add之后再次查看发现少了一行完成完整的操作流程最后就会显示没用什么可以commit的了
版本回退–reset
执行 git reset 命令⽤于回退版本可以指定退回某⼀次提交的版本。 要解释⼀下“回退”本质是要将版本库中的内容进行回退⼯作区或暂存区是否回退由命令参数决定 git reset 命令语法格式为 git reset [--soft | --mixed | --hard] [HEAD] • --mixed 为默认选项使⽤时可以不⽤带该参数。该参数将暂存区的内容退回为指定提交版本内 容⼯作区⽂件保持不变。 • --soft 参数对于⼯作区和暂存区的内容都不变只是将版本库回退到某个指定版本。 • --hard 参数将暂存区与⼯作区都退回到指定版本。切记⼯作区有未提交的代码时不要用这个命 令因为⼯作区会回滚你没有提交的代码就再也找不回了所以使用该参数前⼀定要慎重。 • HEAD 可直接写成commit id表示指定退回的版本 演示–hard git log查看提交日志找到以前的commit id 使用git reset进行回退到之前的版本如果记得回退之前的commit id可以再次回退 使用git reflog用于查看本地提交记录简短的commit id也可以进行版本回退
撤销修改
情况⼀对于工作区的代码还没有add
git checkout -- myfile[wmhpDaD code]$ cat myfile
first line
second line
third line
[wmhpDaD code]$ git checkout -- myfile
[wmhpDaD code]$ cat myfile
first line
second line
情况⼆已经 add 但没有 commit 方案一使用git reset -- mixedgit checkout 方案二使用git reset -- hard
[wmhpDaD code]$ cat myfile
first line
second line
shhhshsh[wmhpDaD code]$ git add myfile
[wmhpDaD code]$ git status
# On branch master
# Changes to be committed:
# (use git reset HEAD file... to unstage)
#
# modified: myfile
#
[wmhpDaD code]$ git reset --mixed HEAD
Unstaged changes after reset:
M myfile
[wmhpDaD code]$ git status
# On branch master
# Changes not staged for commit:
# (use git add file... to update what will be committed)
# (use git checkout -- file... to discard changes in working directory)
#
# modified: myfile
#
no changes added to commit (use git add and/or git commit -a)[wmhpDaD code]$ git checkout -- myfile
[wmhpDaD code]$ git status
# On branch master
nothing to commit, working directory clean情况三已经 add 并且也 commit 了但还未push 直接写HEAD是当前版本 HEAD^-----上一版本 HEAD^^----上上一版本
#回退到上一个版本
git reset --hard HEAD^删除文件
已经 add 并且也 commit 了的文件要删⽂件除了要删工作区的⽂件还要清除版本库的⽂件。 第一步使用 git rm file 第二步git commit
[wmhpDaD code]$ git rm myfile3
rm myfile3
[wmhpDaD code]$ ll
total 4
-rw-rw-r-- 1 wmh wmh 23 Aug 10 17:04 myfile
-rw-rw-r-- 1 wmh wmh 0 Aug 10 16:18 myfile2
[wmhpDaD code]$ git status
# On branch master
# Changes to be committed:
# (use git reset HEAD file... to unstage)
#
# deleted: myfile3
#
[wmhpDaD code]$ git commit -m delete file3
[master dda18c2] delete file31 file changed, 0 insertions(), 0 deletions(-)delete mode 100644 myfile3
[wmhpDaD code]$ git status
# On branch master
nothing to commit, working directory clean