Git基础操作

三种状态

  • Working Directory 工作区
  • Staging Area 暂存区
  • Repository 版本库

配置

配置用户名及邮箱

  1. git config --global user.name 'wforguo'
  2. git config --global user.email 'wforguo@qq.com'

查看已有配置

  1. git config --global --list

image.png

仓库

一个项目其实就对应一个仓库,也就是一个版本库

初始化仓库

初始化仓库

  1. git init

添加代码到暂存区

  1. git add .

提交暂存区代码到远程仓库

  1. git commit -m "first commit"

查看当前项目改动

  1. git status

查看提交记录(所有)

  1. git log

查看单个人的提交记录

  1. git log --author wforguo

推送代码到远程仓库

  1. git remote add origin https://github.com/forguos/dz-share.git
  2. git push -u origin master

删除远程地址

  1. git remote rm origin

文件修改查看

单行查看commitId及内容

  1. git log --pretty=oneline readme.md

image.png
查看具体commit内容,提交人及提交内容

  1. git show a2bab1e7832a55fa2baad2bb338a17a923bc5c52

image.png
查看单个文件修改内容

  1. git log -p readme.md

忽略文件

.gitignore文件,配置需要忽略的文件或者文件夹,对应的文件就会被git忽略

  1. .DS_Store
  2. node_modules
  3. /node_modules
  4. /dist
  5. # local env files
  6. .env.local
  7. .env.*.local
  8. # Log files
  9. npm-debug.log*
  10. yarn-debug.log*
  11. yarn-error.log*
  12. # Editor directories and files
  13. .idea
  14. /.idea
  15. .vscode

文件的操作

添加

  1. git add readme.md

删除

1、手动删除
手动删除文件,再执行git add .添加剩余文件到缓存区
2、代码删除

  1. git rm readme.md
  2. git add .

重命名

手动重命名会先删除原有的,再去新增一个改过之后的;

  1. git mv readme.md Readme.md
  2. git add .

移动位置

readme.md 移动到doc文件夹下

  1. git mv readme.md doc
  2. git add .

readme.md 移动到doc文件夹下并重命名Readme.md

  1. git mv readme.md doc/Readme.md
  2. git add .

代码还原

单个文件

1、未提交至暂存区

还未提交到暂存区的代码,可以撤回

  1. git checkout -- readme.md

2、已提交至暂存区

从暂存区撤销,再去撤回,重复上面的操作

  1. git reset HEAD readme.md
  2. git checkout -- readme.md

3、已经提交commit

  1. git checkout 154653b -- readme.md

git reset

原理是根据commitId 来恢复版本,也可以通过设置HEAD^,来回到上一个版本;
可以通过git log 命令查看提交记录或者commitId,取前七位即可;
使用:

  1. git reset [option] [commitId]
  • 上个版本

    1. git reset --hard HEAD^

    HEAD^ ,^个数代表回退到前几个版本。

  • 某个版本

    1. git reset --hard 154653b

    option 共有 3 个值,具体含义如下:

  • —hard:撤销 commit,撤销 add,删除工作区改动代码

  • —mixed:默认参数。撤销 commit,撤销 add,还原工作区改动代码【默认】
  • —soft:撤销 commit,不撤销 add,还原工作区改动代码

**--hard**参数慎用,他将你工作区的代码直接删掉

git reset是真正的回退一个版本,修改的代码都不会有log产生
git push会提示需要先pull

解决办法有两个,
1、git push -f【也需谨慎】
2、使用git revert

git revert

新增一个提交,并且这个提交是使用上一个提交的代码。
使用:

  1. git revert -n [commitId]

Tag

查看

  1. git tag

添加

  1. git tag v1.0

指定commit

  1. git tag v1.0 154653b

删除

  1. git tag -d v1.0

推送

  1. git push origin v1.0

分支的操作

基本操作

查看分支

  1. git branch

image.png
查看本地仓库与远程仓库的关系

  1. git branch -av

image.png

创建分支

  1. git branch newName

切换分支

  1. git checkout newName

创建并切换

  1. git checkout -b newName

切换分支并与远程分支关联

  1. git checkout -b newName remotes/origin/newName

删除分支

  1. git branch -d newName

强制删除分支

比如当前分支commit了,没有push之时

  1. git branch -D newName

删除远程分支

  1. git push --delete origin oldName

分支重命名

  1. git branch -m oldName newName

合并分支

先切换到目标分支

  1. git checkout target

合并到当前target分支

  1. git merge dev

解决冲突

  • 忽略其他分支的修改

    1. git merge --abort
  • 手动修改后去提交

image.png
解决冲突后,提交commit

  1. git commit -m 解决冲突

查看版本路线

查看当前的版本路线

  1. git log --oneline --graph

修改分支名称

1. 本地分支重命名(还没有推送到远程)

  1. git branch -m oldName newName

2. 远程分支重命名 (已经推送远程-假设本地分支和远程对应分支名称相同)

a. 重命名远程分支对应的本地分支

  1. git branch -m oldName newName

b. 删除远程分支

  1. git push --delete origin oldName

c. 上传新命名的本地分支

  1. git push origin newName

d.把修改后的本地分支与远程分支关联

  1. git branch --set-upstream-to origin/newName