GIT命令

613 阅读4分钟

GIT 简介

GIT 是一个分布式版本控制系统的软件,主要用来控制代码的版本。

安装地址下载:git-scm.com/download/wi…

安装后出现三个版本

GIT GUI  // 图形化的界面
GIT BASH  // 命令行工具
GIT CMD

安装完成之后,我们还需要设置我们的名字和邮箱:

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

查看是否设置成功

$ git config user.name
$ git config user.email

说明新建一个GIT功能分支的步骤,提供每个步骤的指令,并对指令进行说明。

  • Git branch name // 创建名字为name的branch

  • Git checkout xxx_dev // 切换到名字为xxx_dev的分支

  • Git pull //从远程分支拉取代码到本地分支

  • Git checkout -b main_furture_xxx // 创建并切换到main_furture_xxx

  • Git push origin main_furture_xxx 执行推送的操作,完成本地分支向远程分支的同步

说明GIT合并的两种方法以及区别。

  • Git Merge:这种合并方式是将两个分支的历史合并到一起,现在的分支不会被更改,它会比对双方不同的文件缓存下来,生成一个commit,去push。

  • Git ReBase:这种合并方法通常被称为“衍合”。他是提交修改历史,比对双方的commit,然后找出不同的去缓存,然后去push,修改commit历史。

如何查看文件的提交历史和分支的提交历史。

 $ git log <filename> 使用git log查看文件提交历史
 $ git log branch file 使用git log查看分支提交历史

我们在本地工程常会修改一些配置文件,这些文件不需要被提交,而我们又不想每次执行git status时都让这些文件显示出来,我们该如何操作?

在Git工作区的跟目录下创建一个特殊的.gitignore文件,然后把忽略的文件名编辑进去,Git就会自动忽略这些文件。

GIT修改name和email

$ git config user.name "username"                //修改当前仓库的username
$ git config user.email "useremail"             //修改当前仓库的useremail
$ git config --global user.name "username"      //修改全部仓库的username
$ git config --global user.email "useremail"   //修改全部仓库的useremail

查看所有GIT的congfig

$ git config --list

Git的多个版本的回退和前进

$ git log //查看git的版本库

commit <span class="variable">aff8f089</span>2c95b958e4c5dac3cb6128860047fd7e
Author: ArvinChencong <mr.arvin@aliyun.com>
Date: Sun Jul 23 11:16:15 2017 +0800
 
Hello Breakyizhan.com
 
commit <span class="variable">7ed03c09</span>76c11afbdad194681c51c3140490512f
Author: ArvinChencong <mr.arvin@aliyun.com>
Date: Sun Jul 23 11:14:51 2017 +0800
 
Hello Arvin
 
commit <span class="variable">38857818</span>315e6eca295617842752e003d5f17c4c
Author: ArvinChencong <mr.arvin@aliyun.com>
Date: Sun Jul 23 00:07:15 2017 +0800
 
Hello GIT

由上往下是最新到最老的版本,时间线都会给你标记出来了,我们可以用git reset --head加多前6到8位的版本号(不用写全版本号,当然写全也是可以的)就可以回退了。

$ git reset --hard 7ed03c0 //回退到Hello Arvin的版本
$ git log

如图所示:

我们版本库的log已经是没有了“Hello Breakyizhan.com”这个版本了。但是,我现在又想要这个版本了,怎么办?

$ git reflog //查看你每一操作GIT的记录
$ git reset --hard aff8f0892
$ git log

Git 删除文件

$ git rm hello.vue
$ git add .
$ git commit -m "xxxx"

如果删除错了,想恢复文件

$ git checkout hello.vue

GIT远程仓库github的建立 , 生成publich key的方法

检查是否已经存在 id_rsa.pub 或 id_dsa.pub 文件,默认目录是C:\Users\Administrator.ssh,复制里面的内容到github上面去创建SSH keys

$ cd ~/.ssh    (如果有则进入)

$ ls     (查看当前所在文件的目录)

$ ssh-keygen -t rsa -C "your_email@example.com"  // 若没有,创建一个SSH

关联本地仓库和github仓库

$ git remote add origin XXXXX //XXXXX:指的是代码地址(例如:https://github.com/Breakyizhan/HelloGIT.git)

测试仓库的连接

$ ssh -T git@github.com

查看本地分支

$ git branch
xxx
yyy
* master  // 目前所处的分支

查看远程分支

$ git branch -r

查看本地和远程分支

$ git branch -a

创建分支

$ git checkout -b dev //创建并切换分支

切换分支

$ git checkout xxx // 切换到XXX分支上
Switched to branch 'xxx' 

删除本地分支

$ git branch -d xxx
$ git branch -D xxx(强制删除分支)

注意: 不能删除正在运行的分支

删除远程分支

$ git push origin --delete xxx

修改文件名

$ git mv aaa.html  bbb.html

移动文件到指定的位置

// 移动文件xx.html到test文件夹下
$ git mv xx.html test

文件有变化时查看文件前后的变化

$ git log --pretty=oneline  xxx.html

(1)此时会出现一个关于这个文件的commit id
(2)根据commit id查看谁修改的,修改的内容
$ git show commit-ID

// 查看具体的修改的内容
$ git log -p xxx.html

合并分支

$ git checkout master //切换回master
$ git pull // 从master分支拉取代码
$ git merge dev //dev分支的内容合并到master分支
$ git add .
$ git commit -m "xxx"
$ git push //代码提到库中

遇到冲突的分支合并

image.png

// 第一种方法
$ git status  // 合并冲突后的任意时刻使用 git status 命令来查看那些因包含合并冲突而处于未合并(unmerged)状态的文件

$ git add // 解决了所有文件里的冲突之后,对每个文件使用 git add 命令来将其标记为冲突已解决
// 第二种方法(推荐)
$ git merge --abort (保留当前分支的代码)
// 第三种方法(手动)
冲突提示语1:采用当前更改
冲突提示语2:采用传入的更改
冲突提示语3:保留双方更改
冲突提示语4:比较更改

提交代码到版本库

$ git status  // 查看当前的版本库的状态 
$ git add .   // 添加所有文件到版本库
$ git commit -m "xxxx"  // 把xxxx代码提交到代码库
$ git log   // 查看是否完成提交

提交代码不提交node-modules

首先,在项目目录下打开git Bash Here,输入命令:touch .gitignore

完成后项目中会出现一个后缀名“.gitignore”为的文件。

打开该文件,查看生成文件的时候是否已经自动配置好了

.DS_Store
node_modules/
unpackage/
dist/
package-lock.json
yarn.lock
# local env files
.env.local
.env.*.local

# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# Editor directories and files
.project
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw*

微信图片_20210401155744.jpg