一文普及 Git 使用与常用命令整理

闲言碎语

 刚工作没几年,最开始使用的是 svn,感觉操作简单,就是多人开发的时候管理代码贼麻烦。后来换了新公司后使用 Git 管理代码,发现这玩意简直不要太好用,尤其是可以建分支,减少了工作中很多麻烦的操作。于是乎我变成了 Git 的忠实粉丝。我使用的是 Win 电脑,最开始不知道 Git 命令,也懒得去敲,所以一直使用 sourceTree 来操作(也推荐小白先用该工具理解操作的含义后再考虑用命令方式操作)。后来发现用工具没有用命令行那样装*,所以也开始了解一些常用的 Git 命令,于是乎就有了这篇文。文中的一些概念都是我理解后白话的,如有什么不足,欢迎纠正补充。

概念介绍

1. 区分“本地操作”与“远程操作”

 本地操作:表示操作的是本地电脑的文件夹中的文件。

 远程操作:表示操作的是远程仓库(如: gitLab 、码云等第三方代码管理仓库)中的文件。

2. 区分“工作区”、“暂存区”与“待推送区”

 注意:工作区、暂存区与待推送区都是指本地操作。(名字是我自己理解后起的,欢迎纠正为正规名称)

 工作区:表示正在修改或修改过的文件的存储区域,也就是文件夹中的文件。

 暂存区:表示将修改过的文件打上标识,标记为已经确认修改完成的文件,体现在文件夹中的 .git 文件。

 待推送区:表示更换暂存区中的文件标识,标记为本地代码已经全部修改完毕,可以推送到远程仓库了,体现在文件夹中的 .git 文件。

3. 区分主线与分支

 主线:新建的远程仓库默认会生成一个 master 分支。

 分支:根据业务需求创建的分支,常用的有 feature 分支(功能分支)、bug 分支(问题修复分支)

 ps: 建议不要直接在 master 分支上开发,而是从 master 上新建 feature 分支,待开发完成、测试无误后合并到 master 上。

4. Git 标签

 标签通常用于代码封版的时候使用。作用于 commitID 上,因为commitID 是一串无规则字符串,不易区分和理解,所以添加标签可以方便区分版本与代码回溯,并且可通过标签快速找到对应的 commitID。

实际场景中使用Git命令

一、本地代码已经写完,如何推送到第三方代码管理仓库(如:码云等)的新建项目中?

  1. 打开 Git 命令工具,进入到本地代码文件夹,执行 git init 初始化该文件夹。
  2. 执行 git remote add origin + 远程项目地址,关联本地文件夹与远程库。
  3. 执行 git status,查看被修改过的文件。
  4. 如果忘记修改了哪些内容,可以执行 git diff + 步骤3中显示的修改过的文件路径(注意:一定按照步骤3显示的文件按路径写,精确到文件名称与后缀),查看完可以通过 q 或者 shift+z+z (按住 shift 同时按两次 z 键)退出。
  5. 如果有一些文件不想修改,可以执行 git checkout -- 文件路径 来撤销修改。
  6. 确认没问题了,执行 git add 文件路径 来一个个添加文件,或者执行 git add 文件夹路径 添加整个文件夹下的文件,再或者执行 git add -A 添加全部文件到暂存区。

    ************** PS:到此为止,结束了“工作区”的操作 **************
  7. 如果此时需要干点别的,这次的代码下次管理的话,可以执行 git stash 将代码进行存储(当然它也将工作区中的代码一起存储了),之后要是想看存储了哪些,可以执行 git stash list,如果想恢复就执行 git stash apply +list中的id。更多储藏命令,请参照本文命令整理。
  8. 如果有些文件不想提交了,可执行 git reset HEAD +文件路径,将文件退回到工作区,再由工作区放弃修改。
  9. 确认没啥问题就可以执行 git commit -m +"提交备注",将代码提交到待推送区。注意:一定要写提交备注,方便以后查看知道提交了什么功能等。

    ************** PS:到此为止,结束了“暂存区”的操作 **************
  10. 如果不想推送到远程仓库,可执行 git reset --hard HEAD^,退回到上一次提交的版本。
  11. 确认没啥问题,执行 git push -u origin +自己的分支,将代码推送到远程。(第一次推送需要添加-u,以后可以省略)更多撤销待推送区代码命令,请参照本文命令整理。

    ************** PS:到此为止,所有操作结束 **************

二、我想查看之前都提交了什么东西,怎么操作?

 执行 git log 可以查看详细的提交信息(包括 commitID、提交人、提交时间、提交备注)。

 如果只想看 CommitID 和 提交备注,可执行 git log --pretty=oneline。
 如果只看某个文件的提交记录,可打开指定文件所在的文件夹,执行
git log --pretty=oneline +指定文件名`。

三、线上、内网、测试三种环境的代码怎么区分?

这里就要用到 Git 最好用的功能了(个人认为)—— 分支!

  1. Git 项目自带一个 master 分支(主线),可以以它为线上环境。
  2. 在 master 分支上执行 git checkout -b +分支名,可以创建并切换到该分支,以它为内网环境。这里暂命名为 dev 分支
  3. 在从 master 分支上新建一个测试分支,这里暂命名为 dev-test 分支。
  4. 三种环境搭建完成后,可以在 dev 分支中进行日常开发工作,开发完成后,执行 git checkout dev-test 切换到 dev-test 分支,然后执行 git merge dev -m +"合并备注" 将 dev 分支中的代码合并到 dev-test 分支,或者执行 git merge --on-ff -m +"合并备注" 可以合并分支并生成合并日志,然后测试成功之后再合并到 master 上进行发版。
  5. 如果你忘记你又哪些分支时,可执行 git branch 查看所有分支名,分支名前面带星号的就是当前分支。
  6. 在测试期间如果出现 bug ,可新建 bug 分支(git checkout -b bug-***),在修复后再合并到 dev 分支,然后执行 git branch -d +分支名 将该分支删除。
  7. 这里的所有操作都是本地操作!如果想在远程仓库也有你新建的分支,需要执行 git push origin +分支名推送到远程仓库。

怎么从现有的远程仓库获取代码开发呢?

  1. 执行 git clone +远程仓库代码地址将远程的 master 代码拉取到本地。
  2. 拉取到本地后,如果想再拉取分支上的代码,可执行 git pull origin +远程分支名 将指定分支拉去到本地。
  3. 如果你是参与开源项目,最好拉去代码后新建一个自己分支,开发结束后,可以将分支推送到远程仓库,由项目管理者确认是否要合并你的代码。

本地代码保存到多个第三方管理仓库该怎么操作呢?

  1. 先将本地代码关联到一个第三方管理仓库 git remote add origin +第三方管理仓库地址,然后将代码推送。
  2. 代码推送成功后,执行 git remote remove origin 取消关联,再执行步骤1中的命令,关联其他的第三方仓库。
  3. 如果不知道现在关联的是哪一个仓库了,可执行 git remote -v 查看当前管理的仓库地址。

多人开发时代码该如何管理呢?

  1. 从开发分支(暂叫 dev 分支)上新建自己的功能分支(feature 分支),然后进行开发。
  2. 开发完成,先执行 git pull 拉取 dev 分支上最新的代码。然后执行 git push origin dev 将自己的代码推送到远程仓库。
  3. 如果拉取 dev 分支后提示有冲突时,需要手动对冲突代码进行取舍,处理结束后再提交推送。
  4. 如果 git pull 提示 no tracking information,则说明本地分支与远程分支的链接关系没有创建,用命令 git branch --set-upstream-to=远程主分支/远程分支 本地分支。

常用命令整理

本地操作

  1. git init :初始化文件夹为 git 仓库
  2. git add +文件路径 :将文件添加到“暂存区”
  3. git commit -m +提交备注 : 将文件提交到“待推送区”
  4. git status :查看被修改过的文件
  5. git deff +文件路径 :比较查看文件修改了哪些内容
  6. git log :查看详细的提交记录
  7. git log --pretty=oneline :仅查看包含 commitID 和提交备注的提交记录
  8. git log --pretty=oneline +文件名 :到某个文件夹下执行该代码,查看指定文件的提交记录
  9. qshift+z+z :退出查看日志或记录
  10. git checkout -- 文件路径 :撤销“工作区”修改的文件内容
  11. git reset HEAD 文件路径 :撤销“暂存区”修改的文件内容
  12. git reset --hard HEAD^ :回退到上个版本(上一次的commit)
  13. git reset --hard HEAD~10 : 回退到上10个版本
  14. git reset --hard +commitID :退回到指定 commit
  15. git reflog :查看之前的 commitID
  16. git rm +文件路径 :删除指定文件

远程操作

  1. git remote add origin 远程仓库地址 :关联远程库
  2. git remote remove origin :取消关联
  3. git push -u origin +本地分支名 : 将分支推送到远程仓库
  4. git clone +远程代码地址 :拉取远程仓库代码
  5. git pull origin +远程仓库分支 : 拉取指定远程仓库分支代码
  6. git remote -v :查看远程仓库详细信息(仓库连接地址)

分支操作

  1. git checkout -b +分支名 :创建并切换分支
  2. git checkout +分支名 :切换分支
  3. git branch +分支名 :创建分支
  4. git branch :查看分支
  5. git merge +被合并分支名 :合并分支
  6. git merge v--on-ff -m +合并描述 : 合并分支并生成合并日志
  7. git branch -d +分支名 :删除分支
  8. git branch -D +分支名 :强制删除分支
  9. git log --graph --pertty=oneline -abbrev-commit :查看分支合并情况

储藏管理

  1. git stash :储藏当前“工作区”内容
  2. git stash list :查看储藏内容
  3. git stash apply :恢复储藏内容到工作区,但不删除储藏内容
  4. git stash apply +储藏内容的key :恢复指定储藏内容
  5. git stash drop :删除储藏内容
  6. git stash drop +储藏内容的key :删除指定储藏内容
  7. git stash pop +储藏内容的key :恢复并删除指定储藏内容

标签管理

  1. git tag +标签名 :创建标签,默认打在最新的 commitID 上
  2. git tag +标签名 +commitID :在指定 commitID 上创建标签
  3. git tag :查看所有标签,按字母排序
  4. git show +标签名 :查看指定标签信息
  5. git tag -a +标签名 -m +标签描述 :创建带描述的标签
  6. git tag -d +标签名 :删除指定标签
  7. git push +远程分支 +标签名 :推送指定本地标签到远程仓库
  8. git push +远程分支名 --tags :推送全部未推送的本地标签

结束语

该文章参考廖雪峰老师的 Git 教程+平常搜索收集的,感谢廖雪峰老师和各位提供命令笔记的同学们。同时该文章中如有操作命令错误或者您有其他常用命令,欢迎下方留言。

你可能感兴趣的:(一文普及 Git 使用与常用命令整理)