Git学习历程
图例概览
原图

原图

git安装及配置
- 设置git仓库的用户名,email
git config -- global user.name 'yourname' git config -- global user.email 'youremail'
|
还可以配置本地的用户名,email ,本地的用户名密码权重比全局要高,当初始化完成,本项目的用户名邮箱会做本更
git config --local user.name '' git config --local user.email ''
|
查看当前用户的配置信息
git config --list --local or --lobal
|
打印结果:

2. 初始化一个git仓库的命令
cd project git init
or
git init myproject
|
- 配置免密ssh
:::tip
配置公私钥,如果已经配置过ssh key需要备份
:::
cd ~/.ssh mkdir key_backup cp id_rs a*key_backup
|
:::
生成sshkey
$ ssh-keygen -t rsa C "251205668@qq.com" 需要输入密码 生成的公钥私钥会放在.ssh文件下
公钥.pub文件粘贴进github网站key
|
连接github
$ ssh git@github.com --连接成功后显示
|

4. .git文件目录
---HEAD 告诉我们git当前所处分支 ---config 记录user信息 ---refs 记录分支信息和标签信息
|
git一般的使用命令
git init git add . git commit -a -m 'deploy' git remote add origin 'responity path' git pull git push -u origin master
|
git pull git add . (. -u -A 都是处理全部的变更 +filename是对单文件或多文件的变更处理) git commit -m 'deploy' (此处不能出现变更文件名) git push origin master 当前分支推送远程仓库master
|
远程仓库新建分支
git pull git checkout test git add -A git commit -m 'deploy' git checkout master git merge origin/test git push -u origin master -u第一次推送,后面省去
推送分支进远程分支不是主分支的话 要合并起来 不然会警告
|
git命令合集
文件操作
git mv file1 flie2 --重命名文件file1,git自动add
git rm fileName --删除文件,自动add进暂存
|
git状态显示
git status 查看当前分支信息和变更情况 git log 查看当前分支的版本commit情况 git log -1 查看第一条commit的情况 git reflog 显示当前分支的最近几次提交 git show <commit>:<filename> 显示某次提交时,某个文件的内容 git show <commit> 显示某次提交的元数据和内容变化 git show --name-only <commit> 显示某次提交发生变化的文件
|
分支操作
git branch -av 列出所有分支有具体commit信息 git branch -r 列出远程分支名 git branch branchname 基于当前分支创建分支
git branch -m <old-name> <new-name>
git branch -m oldBranch newBranch git push origin: oldBranch git push --set-upstream origin new_branch
git branch -d <name> git branch -D <name>
git push origin :<name>
git checkout branchName 切换到该分支 git checkout -b branchName master 基于master分支创建分支,并切换到该分支
git checkout head filename 撤销工作区的修改 git checkout head 撤销所有文件的修改
git reset HEAD --fileName 撤销暂存区内容 撤销暂存区内容 然后再 git commit
git reset --hard HEAD 将工作区和暂存区恢复成头指针状态 全部撤销 git reset --hard head^^ 复位到head之前的版本 git reset head~1 撤销一条记录 编辑commit编辑 git push
git log 查看提交历史 git resset --hard log里面的哈希值 -回滚代码 git reflog 查看本地所有的操作历史
git reset --hard head^ 回滚到上一次提交
git stash 将工作区暂存进堆栈 git statsh apply 暂存空间取出来 并不删除堆栈记录 git stash pop 删除堆栈记录
git diff HEAD HEAD^ 对比当前commit和父级commit区别 git diff 比较工作区和暂存区差异 git diff --fileName 文件工作区和暂存区差异 git diff branch1 branch2 比较分支差异 git diff branch1 branch2 --flieName 比较文件
git commit -amend 对最近提交的coomit的message变更 git commit -a -m 'message' 添加所有修改文件到暂存区,并提交版本库(不包括新增文件)
git push -u origin master 第一次推送 git push -f origin master 强制推送 git push -all origin master git push '仓库地址' master
|
.gitignore常见用法
.DS_Store .DS_Store结尾文件或目录忽略管理
node_modules/
dist/ dist文件夹下面的文件忽略关理,但是文件夹会管理
* .idea 所有结尾是.idea文件忽略管理 .vscode
git rm -r --cached . git add . git commit -m 'update .gitignore'
|
多人协作
git flow工作流
git branch 查看本地分支
在公司无权限推送master分支 git checkout -b dev master -master 分支创建分支
git status 查看文件记录
一位成员修改一份文件,然后推送,另一位同学同时修改这份文件,提交会被拒绝
git pull origin dev 拉取远程的dev分支,但是此时会有冲突,因为双方都修改了文件
解决冲突
推送 git push origin dev
选择性拉取远程分支内容(常用场景,不想合并全部分支)
git fetch origin dev git merge FETCH-HEAD 上面拉取的后面的变量
git push origin feature:feature 前面是本地分支 后面是远程的分支,自定义命名
git fetch
拉取远程分支 然后把内容输入到dev分支 git fetch origin feature:dev
|
两种工作流
预定三个分支:
dev 预发布分支 fetaure 开发分支 master 发布分支
首先切换到dev分支
git checkout dev
合并开发
git merge feature
发布
git checkout master git merge dev
打上版本标签推送
git tag v1.0.0
git push origin master --tags
删除tag git tag -d v1.0.0
列出tag git tag --list
删除远程分支或者tag git push origin :refs/tags/v1.0.0
git push origin :远程分支
删除本地分支 git branch -D 分支
|