Git操作

文章目录

  • Git操作
    • 1、git的命令操作(本地操作)
      • 1.1、初始化本地仓库。
      • 1.2、设置签名。
      • 1.3、查看工作区和暂存区的状态。
      • 1.4、将文件添加到暂存区。
      • 1.5、提交暂存区文件到本地仓库。
      • 1.6、查看本地仓库的提交日志。
      • 1.7、基于日志进行工作区版本的回退和前进。
      • 1.8、比较文件
      • 1.9、分支操作
    • 2、Git基本原理了解
    • 3、Git远程操作
      • 3.1、给本地仓库添加远程地址
      • 3.2、删除远程地址
      • 3.3、修改远程仓库地址
      • 3.4、将本地代码推送到远程仓库
      • 3.5、克隆远程库到本地
      • 3.6、拉取远程仓库更新的代码
      • 3.7、拉取某个分支的代码到本地(本地不存在该分支)
      • 3.8、推送修改到远程库
      • 3.8、跨团队协作开发
    • 4、SSH免密登录

1、git的命令操作(本地操作)

1.1、初始化本地仓库。

  • git init:初始化本地仓库(注意:执行完成之后当前的目录下会生产一个 .git的文件,里面包含了git的一些配置,以及其他的子目录,不能删除,一般情况下也不要去修改)

1.2、设置签名。

  • git config:设置git签名:项目/仓库级别,默认会优先使用的签名

    • git config user.name haizi_pro

    • git config user.email haiziGood_pro@guoshi.com

    • 设置的信息保存在 ./git/confg

    • $ cat config
      [core]repositoryformatversion = 0filemode = falsebare = falselogallrefupdates = truesymlinks = falseignorecase = true
      [user]name = haiziemial = haizi@guoshi.com
  • git config --global:设置git签名:系统级别全局使用

    • git config --global user.name haizi

    • git config --global user.email haiziGood@guoshi.com

    • 全局签名设置的信息保存在“家”目录下的.gitconfig文件里面

    • $ cd ~ #进入家目录,windows下也是一样的操作
      haizi@haizi MINGW64 ~
      $ cat .gitconfig
      [user]name = haiziemail = xxxx@xxx.com
      

    ​ 注意:无论是git的项目签名还是系统签名都是用于git区别提交者的,而不是用于远程仓库的登录验证的。

1.3、查看工作区和暂存区的状态。

  • git status:查看当前仓库下的git的工作区和暂存区的状态。

    • $ git status
      On branch master   #表示当前所在的分支为master(主分支)分支
      No commits yet     #表示当前仓库没有任何提交记录
      nothing to commit (create/copy files and use "git add" to track)  #表示暂存区没有任何文件可以提交到仓库(可以创建或者复制文件到当前工作区,通过git add 命令让git来进行管理这些文件)
      

1.4、将文件添加到暂存区。

  • git add:将当前工作区的文件添加到暂存区交给git进行追踪管理。
  • git add filename:指定要添加到暂存区的文件

1.5、提交暂存区文件到本地仓库。

  • git commit -m "my info":将暂存区的文件提交到本地仓库

1.6、查看本地仓库的提交日志。

  • git log:查看本地提交的日志

    • haizi@haizi MINGW64 /e/其他文件/gittest (master)
      $ git log
      commit 951f2b119074a4745330ef699ac836969628762d (HEAD -> master)
      Author: haizi <110417ldh>
      Date:   Wed Jul 29 22:22:48 2020 +0800haizi
      
    • 但是上面显示的太详细了,在日志比较多的时候看起来不方便所以就有了下面的方法hi

    • git log --pretty=oneline:单行显示

    • $ git log --pretty=oneline
      951f2b119074a4745330ef699ac836969628762d (HEAD -> master) haizi
      
    • 还有类似的git log --oneline

    • $  git log --oneline
      951f2b1 (HEAD -> master) haizi
      
    • git relog:这个命令也是查看日志的

    • $ git reflog
      951f2b1 (HEAD -> master) HEAD@{0}: commit (initial): haizi
      
    • 与之前的不同的是,这里会显示指针所指向的当前的索引

1.7、基于日志进行工作区版本的回退和前进。

  • git reset --hard 版本哈希值:推荐使用这种方式它可以完成版本的前进和后退

    • $ git reflog
      fc0ed51 (HEAD -> master) HEAD@{0}: reset: moving to fc0ed51
      6aacde3 HEAD@{1}: commit: is you
      fc0ed51 (HEAD -> master) HEAD@{2}: commit: godd man
      951f2b1 HEAD@{3}: commit (initial): haizihaizi@haizi MINGW64 /e/其他文件/gittest (master)
      $ git reset --hard 951f2b1
      HEAD is now at 951f2b1 haizihaizi@haizi MINGW64 /e/其他文件/gittest (master)
      $ git reflog
      951f2b1 (HEAD -> master) HEAD@{0}: reset: moving to 951f2b1
      fc0ed51 HEAD@{1}: reset: moving to fc0ed51
      6aacde3 HEAD@{2}: commit: is you
      fc0ed51 HEAD@{3}: commit: godd man
      951f2b1 (HEAD -> master) HEAD@{4}: commit (initial): haizi
      
  • git reset -- hard HEAD^:关键是^这个符号,一个表示hou’tuihoutui 一个版本n个表示后退n个版本

  • git reset –-hard HEAD~n:n表示后退n次

1.8、比较文件

  • git diff 文件名:

    • $ git diff test.txt
      diff --git a/test.txt b/test.txt
      index 3d8e518..df012f6 100644
      --- a/test.txt
      +++ b/test.txt
      @@ -2,5 +2,5 @@ aasxaxxasxxasxasxas
      -xas
      +海哥就是牛逼
  • git diff:不带文件名可以比较多个文件

  • git diff [本地库中的历史版本][文件名] :与历史版本进行比较

    • $ git diff HEAD
      diff --git a/test.txt b/test.txt
      index 3d8e518..df012f6 100644
      --- a/test.txt
      +++ b/test.txt
      @@ -2,5 +2,5 @@ aasxaxxasxxasxasxas
      -xas
      +海哥就是牛逼

1.9、分支操作

  • git branch xxxx:创建分支

  • git branch -v:检查所有的分支

  • git checkout xxxx:切换分支

  • 合并分支:(在合并前要切换分支到拉去合并的分支上,一般就是我们的主干分支)

    • haizi@haizi MINGW64 /e/其他文件/gittest (master)
      $ git checkout master           #1.切换分支到master分支上
      Already on 'master'haizi@haizi MINGW64 /e/其他文件/gittest (master)
      $ git merge hot_fix             #2.合并hot_fix分支到master分支上
      Updating 1f99c9b..714d40b
      Fast-forwardtest.txt | 2 +-1 file changed, 1 insertion(+), 1 deletion(-)
      haizi@haizi MINGW64 /e/其他文件/gittest (master)
      
    • 解决冲突:当两个分支修改了同一个文件的同一位置的代码时,在进行分支合并的时候会产生文件冲突,这时就要来进行处理

    • $ git merge hot_fix
      ##这里产生了冲突
      Auto-merging test.txt
      CONFLICT (content): Merge conflict in test.txt
      Automatic merge failed; fix conflicts and then commit the result.
      haizi@haizi MINGW64 /e/其他文件/gittest (master|MERGING)#当前就是处于解决冲突的环境
      ##然后暗转上面的指示利用vim去查看冲突的文件1 aasxax2 xasx3 xasxas4 xas5 海哥就是牛逼6 <<<<<<< HEAD #这里是指当前分支的 状态,解决后要删除改提示7 你瞅啥? #第7和第9行就是冲突的地方8 ======= # 这个也要删除9 你瞅啥?瞅你咋地?10 >>>>>>> hot_fix #这里指被合并分支的状态,解决后要删除该提示
      ~
      ##然后
      haizi@haizi MINGW64 /e/其他文件/gittest (master|MERGING)
      $ git add test.txthaizi@haizi MINGW64 /e/其他文件/gittest (master|MERGING)
      $ git commit -m "解决冲突" ##注意这里不能带文件名
      [master a0ae228] 解决冲突haizi@haizi MINGW64 /e/其他文件/gittest (master)
      $ git status
      On branch master
      nothing to commit, working tree cleanhaizi@haizi MINGW64 /e/其他文件/gittest (master)

2、Git基本原理了解

1.git,时通过Hash算法对文件验证的,每次提交都会在本地生成一个hash值,在push的时候也会将这个值puhs到远程,然后再与远程的进行比较,来验证文件的完整性。
2.git是基于快照的方式进行版本保存的,每个版本都是完整,当然为了节约空间,对于没有修改的文件,是直接通过指针指向上一个文件的地址的,
3.git对分支的处理也非常棒,给每个分支一个指针来指向对应的版本。
1.分支创建

2.分支切换


3.分支提交操作


4.切换分支进行提交操作

5.未合并的分支接下来的走势

3、Git远程操作

3.1、给本地仓库添加远程地址

  • git remote -v:查看本地仓库的远程地址
  • git remote add orgin https://github.com/Hxxxxx/xxxx.git:给本地仓库添加远程地址可以使用此命令添给一个本地仓库添加多个远程仓库,注意origin 不能重复

3.2、删除远程地址

  • git remote remove origin 删除即可

3.3、修改远程仓库地址

  • git remote set-url origin <url>

3.4、将本地代码推送到远程仓库

  • git push origin master

3.5、克隆远程库到本地

  • git clone https://github.com/Hxxxxx/xxxx.git

3.6、拉取远程仓库更新的代码

  • git fetch origin master:拉去远程库到本地仓库的暂存区git checkout origin/master查看我们拉去下来的新的内容
  • git merge origin/master:将拉去到暂存区的远程代码合并到本地库中
  • git pull=git fetch+git merge

3.7、拉取某个分支的代码到本地(本地不存在该分支)

  • git clone -b develop XXX:
    如果出现如下的错误
fatal: Cannot update paths and switch to branch 'dev2' at the same time.
Did you intend to checkout 'origin/dev2' which can not be resolved as commit?

表示拉取不成功。我们需要先执行
git fetch
然后再执行
git checkout -b 本地分支名 origin/远程分支名

3.8、推送修改到远程库

  • git push origin master:将本地修改的代码推送到远程仓库。

    • 如果推送时,本地仓库不是基于远程仓库的最新版修改的,会被拒绝推送,需要先拉去远程仓库的代码,然后进行冲突解决,再合并,最后才能推送,冲突解决的具体办法,和解决分支冲突是一样的。

3.8、跨团队协作开发

  1. fork团队的远程仓库到自己的远程仓库中。
  2. 从自己的远程仓库克隆到本地进行修改。
  3. 修改完成之后提交到自己的远程仓库。
  4. 创建一个Pull Request选择目标分支之后提交。
  5. 由团队分支的负责人审查代码,ok之后merge到主分支上。

4、SSH免密登录

#1.进入当前用户的家目录
cd ~
#2.删除.ssh目录
rm -rvf .ssh
#3.运行命令重新生成.ssh密钥目录
ssh-keygen -t rsa -C haizi@qq.com
#4.进入.ssh目录查看文件列表
cd .ssh
ls -if
#5.查看id_rsa.pub文件内容,并复制
cat id_ras.pub
#6.去远程仓库添加复制的密钥

个人总结的Git操作相关推荐

  1. git操作手册_基本的Git手册

    git操作手册 介绍 (Introduction) Hi! I am Sanjula, and in this guide I hope to teach you a little bit about ...

  2. 手把手教你熟悉Git操作

    文章目录 Git 一.版本控制 二.Windows安装Git 1. Git 安装 2. Git 一次性配置 三.理解Git文件的三种状态与工作模式 四.创建版本库并提交文件 1. 初始化git 2. ...

  3. GitHub防黑客新措施:弃用账密验证Git操作,改用token或SSH密钥,今晚0点执行

    萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 还在用账户+密码对GitHub上的Git操作进行身份验证? 赶紧整个token(令牌)或SSH密钥吧! 8月14号0点(8月13日9:00 ...

  4. Git操作手册|命令速查表

    Git操作手册|命令速查表 这篇文章主要介绍Git分布式版本管理与集中式管理的一些差异,总结下Git常用命令作为日后的速查表,最后介绍Git进阶的一些案例. 本文分为以下几个部分: Git与SVN差异 ...

  5. 【Tools】git操作总结

    git操作总结 下载的工程带有子工程submodule: 当使用git clone下来的工程中带有submodule时,初始的时候,submodule的内容并不会自动下载下来的,此时,只需执行如下命令 ...

  6. Git操作常用的命令都在这里了

    转载自 Git操作常用的命令都在这里了 创建仓库 git init 在当前目录执行,会生成 .git目录文件,这个和SVN一致. 提交到仓库 git commit -m "first com ...

  7. git 修改分支名字_基础Git操作与GitHub协作吐血整理,收好!| 原力计划

    作者 | 光子俊来源 | CSDN博客出品 | CSDN(ID:CSDNnews) Git介绍 Git是目前世界上最先进的分布式版本控制系统,可以为我们管理项目.构建工程.多人协作提供便利,作为一个爱 ...

  8. Git操作失败并提示Another git process seems to be running in this......

    问题: Git操作的过程中突然显示Another git process semms to be running in this repository, e.g. an editor opened b ...

  9. Intellij 中的git操作 转!

    http://blog.csdn.net/lovesummerforever/article/details/50032937 Git原理以后会分章节介绍,本次主要说一下intellij怎样操作git ...

  10. eclipse git 取远程代码_IDEA中的Git操作,看这一篇就够了!

    大家在使用Git时,都会选择一种Git客户端,在IDEA中内置了这种客户端,可以让你不需要使用Git命令就可以方便地进行操作,本文将讲述IDEA中的一些常用Git操作. SpringBoot实战电商项 ...

最新文章

  1. FtpCopy数据定时自动备份软件(FTP定时备份)
  2. 背水一战 Windows 10 (40) - 控件(导航类): AppBar, CommandBar
  3. 在Cisco路由器中配置DHCP服务器
  4. java 成员类_Java类的五大成员之一——内部类
  5. 【微信小程序】 自定义导航栏(navigationStyle=custom)
  6. python nltk lemmatizer_Python聊天机器人–使用NLTK和Keras构建第一个聊天机器人
  7. packt_Packt发行的$ 5 Java编程书籍:精通Java 9,Java 9高性能
  8. 综合知识计算机类编制,天津事业编综合知识是什么
  9. 输入 3 个正数,判断能否构成一个三角形。
  10. LeetCode 532. 数组中的K-diff数对
  11. Spring Boot 2.x基础教程:找回启动日志中的请求路径列表
  12. idea集成python_IDEA集成Python插件,SDK配置
  13. 04-11 常见接口安全测试工具
  14. Dubbo 没落了吗?
  15. CAD如何在线查看图纸?
  16. vue json对象转数组
  17. 语音转文字怎么转?分享这些实用软件
  18. 2020-2021阿里巴巴Java面试真题解析
  19. gigaset812说明书_西门子GIASET825电话机说明书.pdf
  20. IPv6升级改造包括什么?

热门文章

  1. 高德地图驾车导航内存优化原理与实战
  2. TOM邮箱|怎么在邮箱里设置邮件个人签名呢?
  3. Linux efi分区被删除了,如何恢复意外删掉的EFI系统分区
  4. 移动ESP分区到磁盘最前端
  5. 【答读者问43】再谈不复权、前复权、后复权、定点复权在回测与实盘中的应用
  6. PLC可编程控制实验装置及单片机综合实验台
  7. python课本图片_python爬虫当当网python书籍图片
  8. 偏振光工业相机_工业相机选择六大参数必看
  9. DEFS一个前所未有的金融生态!
  10. 计算机会计课程设计范文,会计课程设计心得体会范文