git_linux(四)git学习总结

git是什么

Git 是目前世界上最先进的分布式版本控制系统(没有之一)

www.github.com、www.gitee.cn、https://gitlab.cn/

git的诞生

作者是 Linux 之父

当初开发 Git 仅仅是为了辅助 Linux 内核的开发(管理源代码)

版本控制工具的区别 (画图演示)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5RsSIIZZ-1665627090616)(./git03.png)]

工作区、暂存区、本地库(版本区)
工作区(Working Directory)
暂存区 (Stage)
本地库 版本区 本地仓库库(Repository)
git的作用

源代码管理

1. 协同开发
2. 版本记录
3. 冲突解决
4. 代码备份与还原
5. 权限与分支管理
6. ...
git的安装

最早git是在linux上开发的,很长一段时间在linux和unix上运行,后来逐步移植到window、macOS等主流平台上

下载地址:https://git-scm.com/downloads

window: Gitbash / PowerShell / cmder

macos: terminal / iterm2. macos

linux(Ubuntu) : sudo apt-get intall git

全局配置
git config --global user.name ''
git config --global user.email '' 

# 和你git上注册的邮箱和用户名要一致

git config -l 查看配置信息

git目录初始化
git init # 创建空的git仓库

# 查看git仓库文件状态
git status
# 红色: 表示新建文件, 或者新修改了文件,目前位于工作区中
# 绿色: 表示文件在暂存区
将工作区代码, 添加到暂存区(工作区–>暂存区)
# 例如: 
git add .  
git add xxx.html

#  点表示添加所有变动,  xxx.py表示指定文件
将工作区代码,添加到仓库区(暂存区—>仓库区)
git commit -m "备注"
将工作区,直接添加到仓库区(工作区–>暂存区—>仓库区)
# 例如: 
git commit -am '注释信息'
查看版本历史
# 例如: 
git log 查看版本的详细信息
git reflog  查看版本的大致信息

git log --pretty=oneline
# log查看详细信息, reflog查看简要信息
回退历史版本
git reset --hard HEAD
# 或者: 
git reset --hard 版本号

# HEAD表示当前最新版本
# HEAD^表示当前最新版本的,  上一个版本
# HEAD^^表示当前最新版本的, 前两个版本, 依次类推
# HEAD~1 表示当前最新版本的,  上一个版本
# HEAD~2 表示当前最新版本的, 前两个版本, 依次类推

git reflog 
撤销工作区,暂存区修改
撤销工作区:  git checkout 文件名
撤销暂存区:  git checkout HEAD 文件名 (暂存区-工作区)
仓库区代码不能撤销
版本对比
git diff HEAD HEAD^ -- xxx.py
# HEAD表示当前版本,   HEAD^表示上个版本, xxx.py对比的文件
误删除文件,恢复
格式1: rm 文件名
恢复1: git checkout 文件名(必须提交记录到暂存区才可以恢复)

格式2: git rm 文件名
恢复2: git reset --hard HEAD^

分支
  1. 查看分支

    git branch -v
    
  2. 创建分支

    git branch 分支名称
    
  3. 切换分支

    git checkout 分支名称
    git checkout -b 分支名
    
  4. 合并分支

     # 切换到主分支
     git checkout master
     # 合并
     git merge 分支名
    # 将分支推送到远程分支 本地分支跟踪远程指定分支
     git push -u origin dev
    
    推送分支到远程分支上
    1.git config --global user.name ''
      git config --global user.email '' 
    
      // 和你git上注册的邮箱和用户名要一致
    
    2.git remote add origin git@gitee.com:bq1183/0816_test2.git
      git push -u origin "master"(新建创库)
    
    3.cd existing_git_repo
      git remote add origin git@gitee.com:bq1183/0816_test2.git
      git push -u origin "master"(已有仓库)
    
    tag标签
# 设置本地标签
  例如: git tag -a  标签名 -m '标签描述'

# 推送本地标签到远程
  例如: git push origin 标签名

# 删除本地标签
  例如: git tag -d 标签名

# 删除远程标签
  例如: git push origin --delete tag 标签名
多人操作
# clone项目到本地
例如: git clone 项目地址

# 推送项目到远程仓库
例如: git push origin (分支)
    # 第一次推送会提示输入账号, 密码

# 配置是否输入登陆密码信息
git config --global  credential.helper cache 十五分钟有效期
git config  credential.helper 'cache --timeout==3600' 一个小时有效期
git config --global credential.helper store 长期有效

# 拉取远程最新代码到本地
例如: git pull
多人协作解决冲突

  在github上添加多人协作,Collaborators==》添加账号

  当push的时候发现冲突  
一    git fetch:  同步过来远端文件 
      然后可已查看 并且可以手动合并
      然后在进行提交 ,再push到远端=( git push origin main 同步到远程的仓库)
          git diff main origin/main  查看
          git merge origin/main   合并一下,之后再取舍,在进行一次提交

  git fetch
  git diff main origin/main
  git merge origin/main  -m ""
  改完之后在push
二    git pull origin master 拉取过来之后直接合并
配置ssh
cd ~/.ssh
ls  或者 ll
看是否存在 id_rsa 和 id_rsa.pub文件,如果存在,说明已经有SSH Key

ssh-keygen -t rsa -C "[email protected]"

cat id_rsa.pub
//拷贝秘钥 ssh-rsa开头

新建一个SSH Key
取个名字,把之前拷贝的秘钥复制进去,添加就好啦。
验证: ssh -T [email protected]

之前已经是https的链接,现在想要用SSH提交怎么办?
直接修改项目目录下 .git文件夹下的config文件,将地址修改一下就好了

其他
.gitignore配置忽略文件

.gitkeep 允许空目录提交git

下班push 上班pull

你可能感兴趣的:(git,linux,学习)