实际开发中常用的Git操作

文章目录

  • 前言
  • 基础知识
    • 集中式版本控制 - SVN
    • 分布式版本控制 - Git
    • 常用的Linux命令
    • Git工作区域
  • Git 常用命令
    • 获取Git仓库
    • 添加/提交/推送/删除/回退文件
    • 查看信息
    • Git分支
    • Git标签
    • Gitk:一个排查Git问题的工具

前言

git是用C语言开发的,以追求最高的性能。git自动完成垃圾回收,也可以用命令git gc --prune直接调用。

基础知识

集中式版本控制 - SVN

所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改。

所有的版本数据都存在服务器上,用户的本地只有自己以前所同步的版本,如果不连网的话,用户就看不到历史版本,也无法切换版本验证问题,或在不同分支工作。而且,所有数据都保存在单一的服务器上,有很大的风险这个服务器会损坏,这样就会丢失所有的数据,当然可以定期备份。

分布式版本控制 - Git

每个人都拥有全部的代码。

所有版本信息仓库全部同步到本地的每个用户,这样就可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时push到相应的服务器或其他用户那里。由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用。

不会因为服务器损坏或者网络问题,造成不能工作的情况!

Git下载:https://git-scm.com/

Git Bash应用:Unix与Linux风格的命令行,使用最多,推荐最多;

Git GUI应用:图形界面的Git,不建议初学者使用,尽量先熟悉常用命令;

GitK命令:内建的图形化 git,打开Git Bash进入相应的git仓库输入gitk即可。

常用的Linux命令

cd		进入目录
cd ..	回退上一个目录
pwd		显示当前所在目录路径
ls(ll)	列出当前目录中所有文件,后者更为详细(加-al查看隐藏文件)
touch	新建一个文件如touch test.txt就会在当前目录下新建test.txt文件
rm		删除一个文件如rm test.txt就会删除当前目录下的test.txt文件(加-rf删除文件夹无需确认)
mkdir	新建一个文件夹

Git工作区域

Git本地有三个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、本地仓库、远程仓库(Remote Directory)

Workspace:工作区,就是你平时存放项目代码的地方;
Index / Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息;
Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本;
Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换。

日常使用要记住上图6个命令 + review操作:

git clone - 克隆
git checkout - 检出
git add - 增加
git commit - 提交
git push - 推送
git pull --rebase - 拉取
git review branch_name - review
团队内会有一位Code reviewer,负责代码管理的,团队成员一般执行完git commit之后,不会自己手动执行git push,而是执行git review,而后有reviewer检验完代码后,进行git push。

Git 常用命令

获取Git仓库

当前目录新建一个Git代码库
$ git init


从远程克隆
$ git clone 远程Git仓库地址
$ git clone -b 分支名 远程Git仓库地址


显示所有远程仓库
$ git remote -v

添加远程仓库
$ git remote add 名称 url地址
$ git remote add origin [email protected]:XXX/XXX.git


移除远程仓库 - 只是在本地移除记录,并不会影响远程仓库
$ git remote rm 名称 (一般是origin)

从远程拉取代码
$ git pull 名称 (一般是origin) 分支名 (master分支)
$ git pull 名称 分支名 --allow-unrelated-histories

git pull = git fetch + git merge FETCH_HEAD
​git pull --rebase = git fetch + git rebase FETCH_HEAD

​**
解决连接远程仓库出现ssl认证问题
$ git config --global http.sslVerify “false”


测试一下通不通
$ ssh -T [email protected]

添加/提交/推送/删除/回退文件

添加指定文件到暂存区,如果是多个文件,使用空格分隔
$ git add 文件 文件 …
当前目录及其子目录的文件都加入到暂存区
$ git add .


代码从暂存区提交到本地仓库
$ git commit -m “描述信息”

**本地推送到远程仓库
$ git push 名称 (一般是origin) 分支名 (master分支)
第一次提交
$ git push -u origin 分支名
需要输入用户名和密码

删除文件
$ git rm 文件

将暂存区文件取消暂存
$ git restore --staged 文件


将本地仓库文件回退到上个版本
$ git reset --hard HEAD^


回退到前3次提交之前,以此类推,回退到n次提交之前
$ git reset --hard HEAD~3

退到/进到 指定commit的sha码,提交ID可使用git log查看
$ git reset --hard 提交ID

查看信息

查看文件状态
$ git status


查看文件修改哪些内容
$ git diff


查看日志记录
$ git log


查看当前分支的版本历史
$ git log

搜索提交历史,根据关键词
$ git log -S 关键词

显示指定文件是什么人在什么时间修改过
$ git blame 文件

显示今天你写了多少行代码
$ git diff --shortstat “@{0 day ago}”

显示当前分支的最近几次提交
$ git reflog


显示所有提交过的用户,按提交次数排序
$ git shortlog -sn

Git分支

查看本地分支
$ git branch
查看远程分支
$ git branch -r
查看远程全部分支
$ git branch -a


创建分支
$ git branch 分支名

切换分支
$ git checkout 分支名

将本地分支推送到远程仓库
$ git push orighn 分支名

合并分支
$ git merge 分支名
例子:将b分支合并到a分支下
$ git checkout a
$ git push orighn b

删除分支
$ git branch -b 分支名
强制删除
$ git branch -D 分支名
删除远程仓库分支
$ git push orighn -b 分支名

代码冲突解决
打开冲突文件并修复冲突内容,最后执行git add命令

Git标签

创建标签
$ git tag 标签名

查看标签
$ git tag

查看信息
$ git show 标签名

将当前标签推送远程仓库
$ git push origin 标签名

检出标签 - 在新的基础上创建新的分支再进行开发
$ git checkout -b 新的分支名 标签名

删除本地标签
$ git tag -d 标签名
删除远程仓库标签
$ git push origin :refs/tags/远程仓库标签名

Gitk:一个排查Git问题的工具

gitk是一个非常强大的图形化工具,现在安装git会自带gitk的应用程序,在代码库的根目录下直接输入gitk会打开这个界面:
实际开发中常用的Git操作_第1张图片
gitk的主界面主要包含5个部分:

  1. 主菜单栏显示区
  2. 提交信息显示区,显示提交的基本信息,包括节点树、message、提交人和提交时间
  3. 查询条件检索区,根据检索条件查找的窗口
  4. 具体内容显示区,显示 commit 的变更记录或两个 commit 的 diff 内容
  5. 文件列表显示区,显示的commit的文件列表或两个commit的diff文件列表

每个点代表一次提交,线代表父子关系,而彩色的方块则用来标示一个个引用。 黄点表示 HEAD,红点表示尚未提交的本地变动。

你可能感兴趣的:(git)