Git版本控制的基础命令

版本控制 Git 2022年05月26日 00:45 765  

什么是Git

Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目版本管理工具。

Git的使用

1. 设置

1.1 设置用户名和Email

下载完Git以后打开窗口做以下操作:

  • git config --global user.name 'guoyh'
  • git config --global user.email 'hua_network@sina.cn'
  • #ps:增加--global则视为全局(类似整台电脑的用户)都可以使用这个git,没有则只适用于当前用户

1.2 设置编码

为了防止操作中出现乱码,可以设置以下编码。
Windows版:

  • // 显示 status 编码
  • git config --global core.quotepath false
  • // 图形界面编码
  • git config --global gui.encoding utf-8
  • // 提交信息编码
  • git config --global i18n.commit.encoding utf-8
  • // 输出 log 编码
  • git config --global i18n.logoutputencoding utf-8
  • export LESSCHARSET=utf-8

Mac版:

  1. 打开配置文件 vi ~/.bash_profilevim ~/.zshrc
  2. 文件内添加如下代码(自己找个能记住的位置)
  • export LC_ALL=en_US.UTF-8
  • export LANG=en_US.UTF-8
  1. 重启终端,或输入source ~/.bash_profilesource ~/..zshrc
    PS: 可能需要sudu,例:sudo source ~/.bash_profile

2. 创建

2.1 初始化Git库

  • git init

2.2 创建远程库

  • git remote add origin git路径
  • // 注:origin为远程库名个人可随意起名默认都用origin

2.3 拉取

  • git pull '库名(origin)' '分支名'

3. 克隆

  • git clone 远程库地址

4. 提交

  • 提交到暂存区
  • git add -A
  • // -A 可以换成 “.” 作为全文件上传,也可以单独指定文件上传
  • 提交到历史区(本地库)
  • git commit -m "此处为上传说明"
  • 推送文件至远程库
  • git push '库名(origin)' '分支名'

5. 查看

  • 查看当前状态
  • git status
  • 查看版本记录
  • git log (全部提交记录 b:向上翻页 空格:向下翻页 q:退出)
  • git log --pretty=oneline (简洁展示)
  • git log --oneline (精简版)
  • git reflog (精简版增加版本个数记录)
  • 回退版本
  • git reset --hard [哈希值]
  • git reset --hard HEAD^ (往后退一步 几个^就代表退几步版本)
  • git reset --hard HEAD~n(往后退n步版本)

哈希值 为查看版本记录中要回退的版本的logid

6. 比较

  • 比较所有的文件
  • git diff
  • 本地与暂存区文件比较
  • git diff [File]
  • 本地与历史区(commit后的本地库)比较
  • git diff HEAD [File]

File 是要比较的文件路径

7. 分支

查看分支:

  • 查询当前有没有分支
  • git branch -v
  • 查询远程分支
  • git branch -r

新建分支:

  • 新建本地分支
  • git branch [分支名]
  • git checkout -b [分支名]

git checkout -b [分支名] 相当于git branch [分支名] 后 git checkout [分支名],先创建,再切换

  • 将本地分支推送到远程
  • git push origin [本地分支名]:[远程分支名(随意起名,为方便管理,名称统一最好)]

删除分支:

  • 删除本地分支
  • /*第一步:先切换到其它分支*/
  • git checkout [其它分支名]
  • /*第二步:-D删除分支*/
  • git branch -D [要删除的分支名]
  • 删除远程分支
  • /* 推送空分支到远程分支 */
  • git push origin :[分支名]
  • 或者
  • git push origin --delete [分支名]

以上两种都可以删除远程分支

切换分支:

  • git checkout [分支名]

合并分支:

  • /* 首先要切换回主分支 */
  • git checkout [主分支名]
  • /* 合并分支 */
  • git merge [被合并的分支名]

Stash的应用

日常开发中,我们正在写代码,突然线上遇到问题,我们就得切换回线上版本,But已经写了N行代码了,无法切换分支,这怎么办?stash的作用就来了。
第一步:

  • /*
  • 将代码add到暂存区,将写好的代码暂存起来。此时没有commit
  • 然后执行下面命令:
  • */
  • git stash
  • /* 如果想记录一下这条命令的说明则: */
  • git stash save "此处可添加备注"

操作完以上命令后,我们就可以顺利的切换分支了。
第二步: 当我们如愿以偿的将bug修改完,操作完上线以后,想继续编写之前的N行代码,切换回之前的分支,怎么找回之前的代码呢? 如下:

  • /* 应用最近一次的stash,虽后删除该记录 */
  • git stash pop

修改完其它分支后回到之前的分支,继续编辑代码,有很多命令可以供选择,选择适合的就好。如下拓展部分


拓展:

  • /* 列出stash的所有记录 */
  • git stash list
  • /* 删除stash的所有记录 */
  • git stash clear
  • /* 删除最近的一次stash */
  • git stash drop
  • /* stash@{1}表示执行第几条stash */
  • git stash apply stash@{1}