Bootstrap

Git常用操作

Git常用操作

1. Git基本知识

图片从菜鸟教程获取
工作区、暂存区和版本库的区别

工作区:就是你在电脑里能看到的目录。
暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。

远程仓库:本地仓库修改完毕,需要提交到GitHub等代码管理网站上的远程仓库上。

2. 基本使用

0. git配置

最基本的用户名和邮箱。邮箱作为git账号,需要和远程github或者gitee等网站账号相同。

git config --global user.name <name>
git config --global user.email <email>
1. 创建本地仓库

git init

# git init
git init # 初始化当前目录为git本地仓库
git init <git_dir> # 指定git_dir目录为仓库目录
2. 拷贝远程git项目

git clone 拷贝远程仓库到本地

# git clone
git clone <git地址> # 拷贝指定git项目到当前目录
git clone <git地址> <local_dir> # 拷贝指定git仓库项目到指定目录下
3. 提交修改
git add <file> # 提交工作区指定修改文件到暂存区
git add .   # 提交当前目录下所有修改到暂存区

git commit -m '描述信息,提交记录' # 提交暂存区中所有修改到版本库
4. 本地其他基本操作
git status # 查看仓库状态
git diff # 比较工作区和暂存区文件差异
5. 回退代码

git reset

git reset [--soft | --mixed | --hard] [HEAD]
  • –mixed 为默认,可以不用带该参数,用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变。
  • –soft 参数用于回退到某个版本。只有本地库回退到指定版本。
  • –hard 参数撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交。三个区都同步。

HEAD 说明:

  • HEAD 表示当前版本
  • HEAD^ 上一个版本
  • HEAD^^ 上上一个版本
  • HEAD^^^ 上上上一个版本
  • 以此类推…

可以使用 ~数字表示:

  • HEAD~0 表示当前版本
  • HEAD~1 上一个版本
  • HEAD^2 上上一个版本
  • HEAD^3 上上上一个版本
  • 以此类推…
6. 移动和删除
git rm

从工作区和暂存区删除某个文件:

git rm <file>

只从暂存区删除,继续保留在工作区:

git rm --cached <file>

递归删除:

gir rm -r <dir>
git mv

移动或者重命名

git mv <file> <newfile>

如果新文件名已存在,可以加-f进行强制重命名

3. 日志操作

1. 查看历史提交记录

git log 查看历史提交记录

git log # 查看历史提交记录,默认为 新---> 旧,即最新的在最上面
git log --oneline # 一行的形式查看提交记录
git log --graph # 开启拓扑图选项
git log --reverse # 由旧到新查看提交记录
git log --author <authorName> # 查看指定提交人的提交记录
git log [ --since | --before | --until | --after ] <time> # 查看指定时间段的提交记录
2. 查看指定文件的历史修改记录

git blame <file> 查看指定文件的历史提交记录

4. 远程操作

提交本地代码仓库的修改到远程仓库、拉取远程仓库的代码到本地等操作

1. git remote
git remote -v # 查看当前git本地目录对应的远程仓库信息
git remote show [remote-url] # 查看指定远程仓库信息

git remote add [remote-name] [remote-url] # 添加远程版本库

git remote rm [remote-name] # 删除本地仓库对远程仓库的管理,并非删除远程代码仓
git remote rename old_name new_name # 修改仓库名
2. git fetch/git merge

在已有远程仓库的前提下,通过该命令查看远程仓库的指定分支是否有对应修改,然后可以通过git merge进行合并

git fetch [remote-name] # 查看远程仓库是否有更新

git merge [remote-name]/[branch] # 合并远程修改到本地
3. git pull

git pull 命令用来从远端仓库获取代码并合并到本地。其实就是git fetch 和 git merge HEAD 的简写形式。

git pull <远程主机名> <远程分支名>:<本地分支名>

注意:假设远程分支名和本地分支名相同,则本地分支名可以不写。

4. git push

合并本地修改到远程仓库

git push <remote-name> <本地分支名>:<远程分支名>

注意:假设远程分支名和本地分支名相同,则本地分支名可以不写。

如果本地版本和远程仓库的版本有差异,但是有想要强制推送可以加上--force

git push --force <remote-name> <本地分支名>:<远程分支名>

4. git 分支管理

0. git 分支git 分支
1. 创建和切换分支
git branch <分支名> # 创建分支
git checkout <分支名> # 切换到指定分支

git checkout -b <分支名> # 创建并切换到新分支
2. 删除分支
git branch -d <分支名> # 删除指定分支
3. 分支合并

将指定的分支合并到主分支

# 将指定分支合并到当前分支
git merge <合并的分支>

# 删除已合并的分支
git branch -d <合并的分支>
4. 合并冲突与解决

当多个分支中同时修改了同一处地方,此时就需要进行冲突解决。

git merge <合并的分支> # 合并分支
# 出现了冲突

# 在当前分支进行冲突处理,使用编辑器打开冲突文件,进行冲突处理

# 当冲突解决,使用git add 告诉git冲突已解决
git add <冲突文件>

# 重新提交修改到本地仓库
git commit <冲突文件>

参考文章

菜鸟教程:https://www.runoob.com/git/git-tutorial.html
细读 Git | 弄懂 origin、HEAD、FETCH_HEAD 相关内容:https://www.jianshu.com/p/b494ee197ea8

;