git的使用
Posted 转角90
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git的使用相关的知识,希望对你有一定的参考价值。
1. 版本控制工具
一种软件工程技巧,确保由不同人所变编辑的同一程序文件都能得到同步
追踪、维护、控制
集中式
集中管理的服务器,保存所有文件的修订版本。开发人员需要连接这台服务器
CVS
SVN
分布式
git
2. Bash-CMD-GUI的区别
Bash
- git bash 就是一个shell, 是window下的命令行工具,可以执行linux命令
- 基于CMD,在CMD上增加了一些新的命令与功能
- 使用bash更方便
CMD
- 命令行提示符,是Window操作系统上的命令解释程序
- 可以启动cmd运行git命令
GUI
- 适合不喜欢命令行编码的人
- 图形界面
3. Git配置分类
/etc/gitconfig
文件:针对系统配置- 执行
git config --system
会读写该文件中的配置变量 - 需要管理员权限才能修改(开发中通常不修改)
- 执行
~/.gitconfig
或C/用户/xxx/.gitconfig
文件:针对当前用户- 执行
git config --global
读写此文件,对系统的所有仓库生效
- 执行
- 使用当前仓库Git目录中的config文件(
.git/config
):针对该仓库- 执行
git config --local
读写该文件,默认情况下使用的就是它
- 执行
安装git之后,第一要做的就是设置用户名和邮箱
git config --global user.name \'用户名\'
git config --global user.email \'邮箱\'
# 查看配置信息
git config --list
4. git 命令别名
git config --global alias.别名 命令
git config --global alias.st status
git st == git status
5. VS code 集成 git bash 终端
...
// settings.json 终端配置
"terminal.integrated.profiles.windows":
"PowerShell":
"source": "PowerShell",
"icon": "terminal-powershell"
,
"Command Prompt":
"path": [
"$env:windir\\\\Sysnative\\\\cmd.exe",
"$env:windir\\\\System32\\\\cmd.exe"
],
"icon": "terminal-cmd"
,
"GitBash":
"path": ["C:\\\\Program Files\\\\Git\\\\bin\\\\bash.exe"],
"icon": "terminal-bash"
,
,
"terminal.integrated.defaultProfile.windows": "GitBash",
...
6. git 操作
-
git init
:创建仓库 -
git clone register
: -
git add .
-
git commit -m msg
-
git log --pretty=oneline --graph
-
git reflog
-
git status
-
git reset
git reset --hard HEAD^^^
git reset --hard HEAD~3
git reset --hard <commit id>
-
git remote
-
git remote -v
-
git remote add 仓库名 仓库地址
-
git remote show origin
-
git remote prune origin
: 删除了那些远程仓库不存在的分支 -
git remote rename old new
-
git remote remove old
-
git pull origin xxx
: 拉取远程分支 git fetch + git merge -
git push origin xxx
: 当前分支提交到远程 -
git branch -a
: 全部分支 -
git checkout -b xxxx
: 创建并切换分支 -
git checkout xxx
: 切换分支 -
git checkout --track 远程分支
:跟踪远程分支 -
git branch -m oldName newName
: 修改分支名称 -
git branch -d xxx
: 删除本地分支 -
git branch -D xxx
: 强制删除本地分支 -
git push origin --delete [branch_name]
: 删除远程分支 -
git push origin :xxx
: 删除远程分支 -
git stash
-
git pop
: 释放并删除 -
git commit --amend
: 修改commit注释 -
git reset --soft HEAD^
: 撤销上一次commit提交内容,--soft(不删除工作空间改动代码,撤销commit,不撤销git add . ) -
git reset --mixed HEAD^
: (不删除工作空间改动代码,撤销commit,并且撤销git add . 操作),, -
git reset --hard HEAD^
: (删除工作空间改动代码,撤销commit,撤销git add . ) -
git branch --set-upstream-to=origin/master
: 和上游分支建立关联 -
git merge --allow-unrelated-histories
: 允许没有基类的两个分支合并
7. 忽略文件配置
不希望git进行跟踪和管理
通常不需要自己创建
.gitignore
文件
# .gitignore
node_modules
8. git校验和
SHA-1 散列 hash,
40位16进制(0-9)和(a-f)组成的字符串,基于git中文件的内容或目录结构计算出来的
9. 远程仓库验证
-
git Crediential
选项- 默认都不缓存,每次连接都要输入账号和密码
- cache, 存放在内存中,15分钟自动清除
- store: 以明文形式存在磁盘中
- Mac 中是
osxkeychain
: 加密存到用户的钥匙串中 - windows中是
git gredential manager for windows
加密存到用户的钥匙串中
-
ssh
-
ssh-keygen -t ed25519 -C \'你的邮箱\'
生成公钥和私钥常见的 SSH 登录密钥使用 RSA 算法。RSA 经典且可靠,但性能不够理想。Ed25519 的安全性在 RSA 2048 与 RSA 4096 之间,且性能在数十倍以上。
-
10. git标签
重大的版本时,打上标签 v1.0
git tag v1.0
git tag
git tag -a v1.1 -m \'注释\'
git show v1.1
git push origin v1.0
git tag -d v1.0
git push origin -d v1.0
git checkout v1.0
11. Git 提交对象
git cat-file -t <objects/xx/aaasdfsdf>
: 返回文件的二进制git cat-file -p <objects/xx/aaasdfsdf>
:返回文件内容
12. Git 工作流
-
master: 主分支
-
develop: 开发分支,版本稳定以后,合并到master分支
-
hotfix: 修复bug分支
-
feature: 新功能、新特性
-
release: 预发布,测试经过测试
origin/main与本地master分支:
git checkout --track origin main
会创建main分支并关联上层分支上面的简写:
git checkout develop
会检测本地是否有develop分支,没有的话就去远程中找,并且跟踪远程分支并在本地创建develop分支本地develop分支:
git push origin develop
直接将本地分支提交到远程
git rebase master
: 将当前分支的base变为master, 变为线性结构
13. 问题及解决
refusing to merge unrelated histories的解决方案(本地/远程)综合
原因是两个仓库不同而导致的,需要在后面加上--allow-unrelated-histories进行允许合并,即可解决问题
git使用-git使用流程
git是Linus Torvalds为了帮助Linux内核开发的一个开放源代码的版本控制软件。git与常用的版本控制系统svn,cvs不同,采用了分布式版本库的方式,不必服务器端软件支持。。git不仅仅是版本控制系统,它也是内容管理系统。
git与svn的区别:
1. git是分布式的,svn不是;这是git和其他非分布式的版本扣工资系统最核心的区别。
2. git把内容按元数据方式存储,而svn是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs的文件夹里。
3. git分支和svn的分支不同;分支在svn总一点不特别,就是版本库中的另外一个目录。
4. git没有一个全局的版本号,而svn有:目前为止,这是跟svn相比,git缺少的一个特点。
5. git的内容完整性要优于svn:git的内容存储使用的是sha-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
git的工作流程如下:
1. 克隆git资源作为工作目录。
2. 在克隆的资源上添加或者修改文件。
3. 如果其他人修改了,你可以更新资源。
4. 在提交前查看修改。
5. 提交修改
6. 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。
如下图:
以上是关于git的使用的主要内容,如果未能解决你的问题,请参考以下文章