【Git】基本使用:核心命令总结(附SourceTree)

在上一篇【Git】介绍、与SVN对比、支持的通信协议 我们介绍了 Git 及它支持的通信协议,这篇我们就来看看如何使用Git。

1.Git 核心命令

git 客户端安装(无脑下一步就行):

1.1 配置管理

在刚装完git的需要配置 email 和 name,然后才能使用 Git,那怎么配置呢?

#查看所有配置信息
git config -l

#查看系统级别配置(git安装目录下etc)
git config --system --list
#查看全局级别配置(当前用户之下表示的是全局级别的)
git config --global --list
#查看仓库级别配置(当前仓库级别下的.git>config文件)
git config --local --list

#添加配置
git config --global user.name "yourusername"
git config --global user.email "youremail@email.com"
#删除配置
git config --unset user.name

注:覆盖优先级为local > global > system。优先读取local,其次是global,最后是system。

1.2 本地初始化Git仓库

如何初始化一个 Git 本地仓库 ?

#当前目录初始化为 git 本地仓库(在同级目录下会出现一个隐藏的.git文件)
git init  <directory>

#基于远程仓库克隆至本地
git clone <remote_url

1.3 本地添加

如何将工作空间的文件添加到暂存区?

#添加指定文件到暂存区
git add <fileName>
#添加指定目录至暂存区
git add <directory>
#添加所有
git add -A

#将指定目录及子目录移除出暂存区(注:本地文件还在)
git rm --cached <target> -r

#查看提交状态。如果还未提交到暂存区的文件会标红,在暂存区的文件会标绿。
git status 

#添加勿略配置文件 .gitignore

如果我们不想让某个文件被git管理起来,所以如何让 git 忽略这个文件呢?

在仓库的根目录下创建一个.gitignore 文件,写入不想让git管理的文件。两点注意

  1. .gitignore本身就需要忽略,所以此文件也要写进去
  2. .gitignore 文件中可以使用“#”字符开头表示注释,文件夹路径是用“/”字符,文件名可以使用通配符“*”,另外还可以使用“!”字符表示排除。比如 * .class
  3. .gitignore只能忽略那些原来没有被追踪的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。那么解决方法就是先把本地缓存删除(改变成未被追踪状态),然后再提交
  4. 每一个文件夹沟可以创建自己的“.gitignore”文件,如果它上层的文件夹也有“.gitignore”文件,这个文件夹也会受到它的影响

1.4 本地提交

如何将暂存区的文件提交到本地仓库?

#提交指定文件到本地仓库
git commit <fileName>
#全部提交
git commit -a 
#-m编写提交注释(注:如果在commit命令中指定了-m,那么就不会再弹出vim让写提交注释了)
git commit <fileName> -m <注释>
#快捷提交至本地仓库
git commit -am '快添加与提交全部暂存区文件'

#版本回退(这个id可以根据git log查看日志信息去找到)
git reset --hard commitid

1.5 日志管理

如何查看我当前库的历史提交信息?

#查看当前分支下所有提交日志
git log
#查看当前分支下所有提交日志
git log {branch}
# 单行显示日志
git log --oneline
# 比较两个版本的区别
git log master..experiment

#以图表的方式显示提交合并网络
git log --pretty=format:'%h %s' --graph

1.7 分支管理

如果我现在有多个开发人员,开发不同模块,都在master上写吗?

#查看当前分支, -avv查看远程分支
git branch [-avv]

#基于当前分支新建分支
git branch <branch name>
#基于提交新建分支
git branch <branch name> <commit id>

#切换分支
git checkout <branch name>

#删除分支(注:删除时必须在其他分支上)
git branch -d {dev}

#合并分支(比如将要将dev分支的内容合并到master分支,那么要在master分支执行该命令)
#注: 如果因冲突导致自动合并失败,此时 status 为mergeing 状态。需要手动修改后重新提交(commit) 
git merge <merge target>

分支规范:

  • master分支:主分支。保持稳定

    • 不允许直接往这个分支提交代码,只允许往这个分支发起 merge request
    • 只允许 release 分支和 hotfix 分支进行合流 , 所有在 Master 分支上的 Commit 应该Tag
  • develop分支:开发分支。相对稳定的分支,用于日常开发,包括代码优化、功能性开发。

  • feature分支:特性分支。

    • 从develop分支拉取,用于下个迭代版本的功能特性开发。
    • 功能开发完毕合并到develop 分支, 合并完分支后一般会删点这个Feature分支,但是我们也可以保留。
  • release分支:发布分支。

    • 从develop分支拉取,用于回归测试,bug修复

    • 发布完成后打tag并合入master和develop, (注:一旦打了Release分支之后不要从Develop分支上合并新的改动到Release分支)

  • hotfix分支:热更新分支。

    • 从develop分支拉取,用于紧急修复上线版本的问题

    • 修复后打tag并合入master和develop

1.8 tag 管理

Commitid不容易记住,能不能用一种比较独特的方式去记住每个版本?答:Commitid相当于IP,Tag相当于域名。

#查看当前仓库的标签列表
git tag
#创建分支
git tag <tag name> <branch name>
#删除分支
git tag -d <tag name>

1.9 远程仓库

本地仓库说完了,那如果我不同地区的人要合作开发怎么搞?

#查看远程配置
git remote [-v]
#添加远程仓库地址(注:远程仓库一般命名为origin,不同的远程仓库需要配置不同的名字; url一般多采用http协议)
git remote add <github name> <url>
#删除远程地址
git remote remove <github name> 

#上传新分支至远程
git push -u <github name> <branch name>
#将本地分支与远程建立关联
git branch --track --set-upstream-to=<github name>/<remote branch> <local branch>
#直接使用git push 时只会上传的到一个远程仓库的一个分支,是上面 --track 设置的仓库和相应分支
git push 

# 拉取代码到本地
git clone <url>
git clone <url> <filepath>

#提取远程仓库(如果服务器有修改,不会到本地)
git fetch
#合并冲突(如果只是本地或远程一端修改的话,就不会冲突)
git merge
# git pull(更新拉取) = git fetch + git merge
git pull <url>

无论是推送还是拉代码,需要有这样一个权限,也就是说你目前使用的这台电脑是否安全,如果不安全,人家不会让你去推送,而github采用的是RAS加密方式通讯:

  1. 在本地中生成一个 ssh key
ssh-keygen -t rsa -C youremail.com # (输入后一直回车即可完成)
  1. 把这个key告诉github/码云。Settings -> SSH and GPG keys --> New SSH key --> 将公钥粘贴并保存

2.工具使用 Git

一般我们在实际开发更多是用现成IDE自带的GIT工具或者图形化工具去操作Git

上一篇:[转载]SourceTree 跳过注册方法


下一篇:SourceTree安装破姐添加SSH KEY以及拉取代码教程(附资源下载)