git使用

Git 使用

整理自 极客时间

git安装

官方地址:

https://git-scm.com/book/zh/v2

使用前配置

#  添加配置
git config [--local | --global | --system] user.name 'Your name'
git config [--local | --global | --system] user.email 'Your email'
#  查看配置
git config --list [--local | --global | --system]
#  清除设置
git config --unset --local user.name
git config --unset --global user.name
git config --unset --system user.name

#  注
local:区域为本仓库
global: 当前用户的所有仓库
system: 本系统的所有用户        基本不用

构建仓库

# 新建项目
git init 项目名称

# 查看日志
git log
# 查看状态
git status

文件提交

# 添加全部文件
git add -all
# 添加文件进入git暂存区
git add 文件名
# 添加暂存区的全部文件(被跟踪的文件)
git add -u
# 提交并设置备注
git commit -m 'add a file'      #  windows中  '  替换为  "

文件改名

# 从暂存区删除
git rm 文件名
# 更改名字
git mv oldname newname
# 清理暂存区
git reset --hard

查看版本

•    git log --all 查看所有分支的历史
•    git log --all --graph 查看图形化的 log 地址
•    git log --oneline 查看单行的简洁历史。
•    git log --oneline -n4 查看最近的四条简洁历史。
•    git log --oneline --all -n4 --graph 查看所有分支最近 4 条单行的图形化历史。
•    git help --web log 跳转到git log 的帮助文档网页

## 图形界面工具   
安装gitk

gitk

git 目录

在  .git 文件中
•    COMMIT_EDITMSG
•    config 当前 git 的配置文件
•    description (仓库的描述信息文件)
•    HEAD (指向当前所在的分支),例如当前在 develop 分支,实际指向地址是 refs/heads/develop
•    hooks [文件夹]
•    index
•    info [文件夹]
•    logs [文件夹]
•    objects [文件夹] (存放所有的 git 对象,对象哈希值前 2 位作为文件夹名称,后 38 位作为对象文件名, 可通过 git cat-file -p 命令,拼接文件夹名称+文件名查看)
•    ORIG_HEAD
•    refs [文件夹] 
      •    heads (存放当前项目的所有分支)
      •    tags (存放的当前项目的所有标签,又叫做里程碑)

•    cat 命令, 功能:用来显示文件。 例如 cat text.md 显示 text.md 文件的内容
•    ls -al 命令, 表示列出当前目录下的所有文件(包括隐藏文件)
•    git cat-file -t 命令 , 查看 git 对象的类型
•    git cat-file -p 命令, 查看 git 对象的内容
•    git cat-file -s 命令, 查看 git 对象的大小

git branch 分支名
# 切换分支
git checkout 分支名



commit tree blob 关系

# 查看文件
git cat-file -p  哈希值 

分离头指针状态

开发没有基于一个分支的情况

可以进行测试开发

合适,可以保留内容
git branch  新分支名  hash值    
不合适  切换分支  扔掉该内容
git checkout 分支名

head 与branch

head必须基于某个commit

# 根据版本号来比较差异
git diff hash1  hash2
# 比较head与其父commit的差异
git diff HEAD HEAD^1

# 查看分支
git branch -v

# 删除分支
git branch -d 分支hash
git branch -D 分支hash   #强制删除的情况下

修改最新commit的备注

对最新一次提交做 commit 修改
git commit --amend 
进入编辑模式  修改message

修改;老旧commit的message

git rebase -i prenthash(父commit的hash)
选择策略

多个commit整理为一个commit

git rebase -i prenthash(父commit的hash)
选择squash策略

把间隔的几个commit整理为1个commit

比较差异

# 暂存区与head的差异
git diff --cached
# 比较文件差异
git diff HEAD -- file # 工作区 <===> HEAD
git diff -- file # 工作区 <===> 缓存区
git diff --cached -- file # 缓存区 <===> HEAD

暂存区恢复成head一样

git reset 有三个参数
--soft 这个只是把 HEAD 指向的 commit 恢复到你指定的 commit,暂存区 工作区不变
--hard 这个是 把 HEAD,暂存区,工作区 都修改为 你指定的 commit 的时候的文件状态
--mixed 这个是不加时候的默认参数,把 HEAD,暂存区 修改为 你指定的 commit 的时候的文件状态,工作区保持不变

# 取消部分文件
git reset HEAD -- 文件名1 文件名2 

消除最新的几个commit

git reset --hard 指定的commit的hash值

不同commit的指定文件的不同

git diff commit1-hash commit2-hash path-to-filename
或者
git diff commit-id1 commit-id2 path-to-filename

正确删除文件

git rm filename

开发中临时增加紧急任务需求

# 保存当前内容并使工作区清空
git stash
# 完成后
# 该命令恢复工作区,但不删除保存区的内容
git stash apply
# 该命令恢复工作区,并删除保存区的内容
git stash pop
# 查看保存区的内容
git stash list

忽略文件

.gitignore文件

git 备份到本地

#  --bare 参数意思为克隆裸仓库,即只有.git文件的仓库
git clone --bare url 

# 推送
git push url

GitHub

创建账户及设置公私秘钥

创建仓库

将本地仓库同步到github

git remote -v 查看远程版本库信息
git remote add github <url> 添加githup远程版本库
git fetch github 拉取远程版本库
git merge -h 查看合并帮助信息
git merge --allow-unrelated-histories githup/master 合并githup上的master分支(两分支不是父子关系,所以合并需要添加 --allow-unrelated-histories)
git push githup 推送同步到githup仓库

基于远端创建分支

# 查看全部分支
git branch -av
# 创建分支
git checkout -b 本地分支名 远端分支名


不同人修改不同文件

#首先拉取
git fetch github
# 合并分支
git merge github分支名
# 再push
git push github

不同人修改了相同文件的不同区域

# 每天开始工作前要做的:将远端的代码更新到本地
git pull 

#首先拉取
git fetch github
# 合并分支
git merge github分支名
####
以上两步可以合并为git pull
####
# 再push
git push github

不同人修改了相同文件同一区域

需要手动更改 并提交远端

团队协作禁止使用的命令

# 强制push
git push -f
# 禁止向集成分支变更历史

44.GitHub上快速搭建个人博客

代码质量保障

组织仓库

团队项目

合适的集成策略

50.issue

52.团队codereview

53.团队协作分支集成

GitLab

gitlab 项目管理

gitlab codereview

gitlab 集成

gitlab 部署到aws

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值