必须得会的Git命令

97 阅读3分钟

前言

最近在实习感受到公司多人团队协作中对于规范的要求非常高,只有大家都遵守统一的规范才会使得大家像是一个整体在工作,在代码可读性上也有所提高,一定程度上也提高了团队效率,在这个团队协作的过程中git可以说是非常的重要,我之前个人或者少数几个人的开发的时候对于git的使用就停留在clone,push,pull几个命令的程度,现在感觉远远不够,特此专门再来仔细学习学习

git

推荐一个学习git的平台,我也是刚发现的,通过图解的方式展示每个操作之后的状态,帮助理解git命令

git在线学习平台

推送和拉取

git的五个区

image-20230524222621431

常用命令

  1. 初始化仓库
 git init
  1. 克隆代码
git clone [地址]
  1. 添加文件到暂存区
git add <filename>
git add *  // 添加所有文件,不包括文件名以 . 符号开头的文件
git add .  // 添加所有文件,包括文件名以 . 符号开头的文件
  1. 将暂存区的文件提交的本地仓库
git commit -m "代码提交信息"
  1. 将本地的变动代码推送到远端仓库
git push origin master
origin // 是配置的远程仓库,如何配置请看6
master // 主分支,请看分支管理部分//简写,在只配置了一个远程仓库且远程仓库只有一个master分支时才可以
git push
  1. 配置远程仓库
// 添加一个远程仓库origin
git remote add origin git@github.com:ChinglinTHU/git-test-a.git
// 查看配置的远程仓库
git remote -v 
// 修改远程仓库
git remote rename origin test
// 删除远程仓库
git remote remove test
  1. 从远程仓库拉取代码到本地
git pull <远程主机名> <远程分支名>:<本地分支名>
// 将远程的 next分支拉取到本地和master分支合并
git pull origin next:master
// 远程分支和当前分支合并时可以省略第二个分支名
git pull origin next
// 省略写法 把origin的当前分支合并到本地
git pull

image-20230524231201336

git pull过后本地分支如下:

image-20230524231222037

  1. 另一种拉取代码的方式
// 将远程的代码同步到本地,但是不会自动合并  git push等于git fetch + merge
git fetch origin

image-20230524233341062

  1. 撤回本地仓库的某文件
// 撤销 file-name 的commit
git reset <file-name>
  1. 撤回暂存区的文件到工作区
// 从暂存区撤回 file-name
git checkout <file-name>
// 撤回暂存区的所有文件
git checkout .

分支管理

  1. 新建分支
// 新建分支并切换
$ git checkout -b <new-branch-name>
# 如果仅新建,不切换,则去掉参数 -b
  1. 查看当前有哪些分支
git branch
# * dev
#   master # 标*号的代表当前所在的分支  
​
// 查看本地和远程有哪些分支
git branch -a
# * dev
#   master
#   remotes/origin/master
  1. 切换分支
// 切换到master分支
git checkout master
// 也可以使用版本号
git checkout a5d88ea
  1. 合并分支
// 将分支合并到master
git merge <branch-name>
​

其他

  1. 查看git状态,列出当前到暂存区和本地仓库还未提交文件

    gitTest% git status
    On branch master
    ​
    No commits yet
    ​
    Changes to be committed:
      (use "git rm --cached <file>..." to unstage)
      new file:   .aaa
      new file:   aaa
      new file:   bbb
      new file:   ccc
    ​
    

2. git中使用https协议和ssh协议的区别

ssh:

  • 一般使用22端口
  • 需要先在本地生成SSH密钥对再把公钥上传到服务器,以后clone和push的时候就不需要提供账号密码授权
  • 速度相较慢点

Https:

  • 一般使用443端口
  • 需要通过用户名/密码授权
  • 速度相较快点

一般防火墙会打开80和443这两个http/https协议的端口,所以https的方式更通用,对于ssh来说,企业防火墙很可能没打开22端口

总结:

HTTPS利于匿名访问,适合开源项目,可以方便被别人克隆和读取(但没有push权限);

SSH不利于匿名访问,比较适合内部项目,只要配置了SSH公钥极可自由实现clone和push操作