IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> git简单使用 -> 正文阅读

[开发工具]git简单使用

git

分为本地仓库和远端仓库;
整个本地仓库的一个版本分为三个阶段:workspaceindexrepositorygit commit就是向repository中添加了一个新的版本,然后reset的时候,--hard--mixed--soft分别对应恢复到目标版本的那个阶段。
对于--soft,多个版本之间直接reset,index会将中间版本进行合并。
数据状态的变化是修改操作导致的,不同版本之间存储的是修改的信息,通过这些修改的信息不断进行效果叠加最终成为了当前的状态;
使用git的时候,涉及到版本的,一般都需要先进行一次commit,然后再进行操作,如checkout、reset。

配置

  • 设置当前仓库的用户名和用户邮箱
    git config user.name "userName"
    git config user.email "email"
  • 设置全局的用户名和用户邮箱
    git config --global user.name "userName"
    git config --global user.email "email"
  • 查看配置
    git config -l对应仓库的config文件
    git config --local -lC:\Users\lisiw\.gitconfig

裸仓库(中心仓库)

使用–bare参数初始化的仓库,这种仓库并不包含工作区(内部没有代码)所以也就不存在在裸仓库上直接提交变更的情况,也不能在这个目录下执行一般的git命令。
一般情况下裸仓库是作为远端的中心仓库使用的。

初始化

git init --bare

远端仓库操作

操作关系

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

clone

git clone 用户名@ip:/path/to

add restore

  • git add files
    添加文件到暂存区。
  • git restore -S files
    取消暂存区中的文件
  • git ls-files -c
    查看暂存区中数据

commit reset

  • git commit files -m "commits"
    将待提交信息提交到本地仓库。
  • git reset hash
    切换到指定版本
    • git reset --soft head~1
      回退commit信息,不会恢复index级别
    • git reset --mixed head~1 – 默认方式
      回退commit和index信息,源码保留(不重置workspace)
    • git reset --hard head~1
      全部回退,源码也会恢复到指定版本。
    • ~^都是表示前面的版本:
      head~ / head^ 当前head前一个版本
      head~2 / head^2 当前head前2个版本

远端和本地

push

将本地版本推送到远端,在推送之前如果远端版本发生了改变(其他本地进行了push),那么需要使用pull来先拉取一下,如果有冲突的话需要进行处理,处理完毕后在commit一个本地版本,再进行push。

git push origin master
origin -- 要push的位置
master -- 分支

push提交到远端之前先git pull origin master一下,此时会根据远端代码标注当前代码的冲突区域,人工查看远端和当前代码有什么不同,处理冲突之后,使用git add .git commit -m "merged"提交新的版本。

pull

将远端版本拉取到本地,如果有冲突会进行标注。

log

git log --oneline --graph
git log可以显示所有提交过的版本信息,不包括已经被删除的 commit 记录和 reset 的操作

  • commit
    是个SHA1计算出来的哈希值,就是用于描述对应的提交版本。
  • HEAD
    当前最新提交的指针
  • master
    所处分支

git reflog
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wBtDdRc0-1659176467850)(./images/reflog.png)]
对应版本后面的命令是导致切换到对应版本的指令,就是说执行对应指令后切换到对应版本的。
git reflog是显示所有的操作记录,包括提交,回退的操作。一般用来找出操作记录中的版本号,进行回退。
git reflog常用于恢复本地的错误操作。

branch

git branch
可以查看分支

整理版本

  • git commit -amend
    用于将当前的index数据commitrepository中:适用的场景就是说如果版本进行了一些修改,然后将这些修改add到了index中,此时如果想要保存一个版本,一种方法就是commit一次,如果不希望多出来一个版本,那么就可以使用这个指令将index修改的信息commit到当前最近一次的本地仓库版本中。

    git commit --amend                            # 进入交互模式修改
    git commit --amend -m 'new commit message'    # 直接修改上一次 commit
    

    注意:

    1. 这是用一个新的 commit 来替换掉原来的 commit,所以 commit ID 会发生变化。
    2. 不要修改已经 push 的 commit,除非你是在自己的分支
  • git rebase -i
    整体就像是个脚本,根据不同指令处理不同版本;不同版本之间存储的是修改的信息;
    用于本地仓库不同版本的整理,可以合并选中的提交范围;注意:rebase之后,如果内部有p指令,那么会将当前版本指向该commit,因此,一般使用该指令的时候会将end-commit设置为当前版本

    commit4
    commit3
    commit2
    commit1
    
    git rebase -i commit1~ commit3
    

    使用交互式rebase可以细致的操作每一条commit,这样就可以合并修改commit:

    # 多次commit
    # (start-commit, end-commit] 前开后闭区间,默认 end-commit 为当前 HEAD
    git rebase -i [start-commit] [end-commit] -- commit^ 前一个版本   commit~后一个版本
    

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

    commands :
    p, pick = use commit # 保留这个 commit,并将当前版本选择这个版本
    r, reword = use commit, but edit the commit message # 修改 message message
    e, edit = use commit, but stop for amending # 停下来,修改内容,修改完毕后先`add commit`,然后`git rebase --continue`
    s, squash = use commit, but meld into previous commit # 合并对应版本到上一个版本
    f, fixup = like "squash", but discard this commit's log message # 合并且抛弃 message
    d, drop = remove commit # 抛弃这个 commit
    
    • 文件冲突
      当多个版本合并的时候,可能会出现不同版本文件冲突的问题,此时需要手动处理这些冲突,然后将解决冲突后的文件commit到对应的版本,接着继续rebase:
      解决冲突:
      <<<<<<< HEAD
      ...
      =======
      ...
      >>>>>>> ae9a0f6
      注意上面这个版本,head是当前版本,但他又不是传统意义上的当前版本,这个版本和rebase指定操作pick指令相关,并不是调用rebase时对应的版本;
      整体描述了冲突,等号前半部分的数据就是造成冲突时版本的数据,等号后面后半部分就是造成冲突后面版本的数据。
      
      git add .
      git commit --amend
      git rebase --continue
      

分支

查看分支

git branch -a – 查看远端和本地所有分支
git branch -l – 查看本地分支

创建分支

git branch branchName f5e86fbf455960c40e759c48bb0675b54d808611
可以从指定版本创建分支,没有指定的话就从当前最新的commit版本进行创建分支。

删除分支

git branch -d branchName

切换分支

git checkout branchName – 切换分支
git checkout -b branchName – 创建并切换分支,如果存在就失败

合并分支

git merge branchName
将branchName分支合并到当前分支,如果出现冲突,git会将出现冲突的文件都标注出来,然后需要手动处理这些冲突;
出现冲突手动处理完毕后就再commit一个版本,此时就认为已经merge完毕了对应的分支。

重命名分支

git branch -m oldName newName

忽略提交

在git目录下编辑.gitignore文件,该文件也需要进行git同步:

*.exe

检查忽略提交

查看.gitignore中那条规则忽略了fileName的git管理:
git check-ignore -v fileName

checkout和reset

checkout和reset有区别:
checkout是将head指针移动到分支的最新的commit版本(对应的workspace、index、read都指向该版本),reset是将对应分支直接指向对应的分支上。
另外checkout在进行分支切换的时候,如果发现文件在当前版本上进行了修改,那么checkout不会对该文件进行替换,而reset --hard会。测试发现有的时候会直接abort,总之,在进行版本操作的时候最好commit之后再进行处理。

error

push error

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zCgV7mtZ-1659176467853)(./images/gitError1.png)]
这个异常就是别人进行了push,而本地仓库从远端仓库pull时的版本过期,因此需要先pull远端仓库,将远端的合并到本地的才可以进行push。

github

创建仓库

添加远程仓库
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OVL9yghR-1659176467854)(./images/githubaddrep.png)]

ssh

添加ssh的方法:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jm7jI6om-1659176467855)(./images/addssh.png)]

在github上创建一个仓库,然后

gitee

新建仓库

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

ssh

添加ssh的方法:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ixY7taov-1659176467858)(./images/giteeaddssh.png)]

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-08-06 11:04:10  更:2022-08-06 11:05:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 22:45:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码