zoukankan      html  css  js  c++  java
  • Git通

    写在前面

    本文主要讲git的日常操作,是我自己的学习笔记,在日常的工作中,熟练使用这些,基本就能够满足了,如有任何问题,请留言指教呢

    GitHub VS SVN

    SVN版本集中管理,所有代码都在中央服务器上
    Git去中心化,所有本地主机均有一个独立的版本库

    01 安装Git客户端

    -Linux: yum -y install git
    -Winddows:https://git-scm.com/downloads
    -Mac :brew install git
    

    由于Linux 和Mac 安装比较简单。这里说明一下windows的安装,windows用户打开上面的下载页面,选择windows即可,默认自动下载64bit的。32bit也可以自行选择。
    然后,选择合适安装目录,一路下一步即可。

    Linux 和Mac和Windows(可能需要配置环境变量)都可以执行:
    git --version 进行验证

    02 拥有一个Git的账号

    github主页 :https://github.com  ,这里直接注册
    (以github为例,常用的像码云,gitlab等也是可以叠)
    
    ps:推荐使用命令行进行操作(git是有图形化工具的)
    

    03 GitHub的使用-配置sshkey

    - 配置sshkey(不用每次输入用户名密码)
    	- 生成key:  ssh-keygen -t rsa -C "邮箱地址"
    	-cd ~/.ssh (用户目录下的.ssh文件夹)
    	-复制id_rsa.pub 的公钥内容到GIitHub网站中
    

    04 配置多个Git网站(sshkey)

    事先说明:我们都是需要添加config这个配置文件的,
    具体操作,看下面
    
    参照上面的第三步,我们把个人github配置好之后,
    我们想添加自己公司的gitlab,怎么办?
    
    我们是要重新生成单独的sshkey即可,在生成之前,把之前的文件进行重新命名
    mv id_rsa id_rsa_persongithub
    mv id_rsa.pub id_rsa_persongithub.pub
    重命名之后,再次,执行ssh-keygen -t rsa -C "邮箱地址"
    这样,又会生成id_rsa和id_rsa.pub  ,把这里的id_rsa.pub 粘贴到你的公司git账号下
    再次,重命名操作一下:
    mv id_rsa id_rsa_companygitlab
    mv id_rsa.pub id_rsa_companygitlab.pub
    因为,这个时候,有两个sshkey:
    我们需要新建一个config文件,配置多个sshkey, 添加Host/HostName/User/IdentityFile 四项
    	- cd ~/.ssh (用户目录下的.ssh文件夹)
    	- vim config			
    		# 新增
    		# 个人GitHub
    		Host github.com
    		HostName github.com
    		User liuge36
    		IdentityFile /home/hadoop/.ssh/id_rsa_persongithub	
    		
    		# 公司GitLab
    		Host gitlab.com
    		HostName gitlab.com
    		User liuge36
    		IdentityFile /home/hadoop/.ssh/id_rsa_companygitlab	
    
    这样,就可以了,
    假如,这个时候,你还需要配置别的git网站的地址,
    你再生成,重命名,添加config信息即可
    
    拓展:windows的配置
    Host github.com
    HostName github.com
    User liuge36
    IdentityFile C:\Users\liuge36\.ssh\id_rsa
    

    ps:上面的操作,如果有问题,可以留言,我会尽量第一时间回复的

    05 Github的使用-仓库创建(init)、克隆(clone)、拉取(pull)和推送(push)

    Run

    git config --global user.email "you@example.com"
    git config --global user.name “Your Name”

    git clone <git仓库地址>

    liuge36@liuge36lh MINGW64 ~/Desktop/lh
    $ cd AutoTest/
    liuge36@liuge36lh MINGW64 ~/Desktop/lh/AutoTest (master)

    $ vim test.txt
    111111111
    :wq

    5.1查看本地文件的状态

    git status

    5.2把test.txt 这个文件使用git进行追踪

    git add test.txt 
    

    5.3添加之后,你要是想删除本地追踪

    git rm test.txt 即可
    

    5.4添加一个你本次提交的一个说明文件

    git commit -am "add:测试文件"
    

    提交推送:git push

    拉取拉取

    这个时候,远程的github仓库收到了你的推送.
    假如你的小伙伴需要拉取你的代码,怎么办?
    直接使用:git pull

    liuge36@liuge36lh MINGW64 ~/Desktop/lh/AutoTest (master)
    $ git pull
    Already up to date.
    
    liuge36@liuge36lh MINGW64 ~/Desktop/lh/AutoTest (master)
    $
    

    使用git pull 就会把远端仓库的最新代码替换掉你本地的代码

    06 Github的使用-项目分支

    查看本地分支

    git branch

    查看所有远程端的分支?

    git branch -a

    在本地创建新的分支,创建之后,你就会自动切到该分支上去

    git checkout -b branch1

    再次查看本地分支

    git branch

    vim text.txt

    修改这个文件的内容
    :wq
    

    这个时候,text.txt文件已经发生了改变

    git add 进行添加追踪

    (好比:我们在项目中,
    创建新的分支(新分支一开始和master分支代码一致)之后,
    我们对新的分支,进行代码的修改,提交,
    这样不影响,master分支的代码
    )

    git add text.txt
    git commit -m "提交到分支1上的内容"
    git push --set-upstream origin branch1
    

    小结:很多同学开发同一个项目的时候,
    不想和别人(master或其余人)的代码起冲突,就可以建立新的分支,进行工作

    07 Github的使用-项目分支的删除

    分支的删除
    场景:线上的应用程序在运行过程中,发现了bug。
    bug的修复,肯定是不能在当前工作dev分支上修复,
    ,一般来说,是在master这个生产分支上操作。

    这个时候,从master分支(运行在生产环境的代码)拉出来一个分支

    基于master分支,拉出来一份代码(bug分支),修改Bug,测试通过,合并到主分支,上线

    上线之后,刚刚这个bug分支就没有用了,就需要删除

    —就是说,有的分支已经合并到master分支上面去了,
    就没有用了,就需要删除


    查看本地在哪一个分支上

    git branch
    git branch -a(本地和远程一起看了)

    当前工作分支为branch1,删除branch1

    git branch -d branch1

    失败,因为需要切换到别的分支上,因为当前在被删除的分支上

    切换到master分支上

    git checkout master

    再次尝试删除本地的branch1分支

    git branch -d branch1

    删除分支成功

    同时要删除远程的branch1 分支,怎么办?

    git branch -r -d origin/branch1

    再加,把本地操作 推送到远程,就能删除远程的branch1分支

    git push origin :branch1

    08 分支的合并操作

    多人开发,合并分支

    创建分支

    git checkout -b mergedemo

    修改mergedemo 分支的test.txt

    vim test.txt
     修改
    这是需要合并到master分支的内容
    

    需要合并,先要推送到远程仓库

    git add test.txt
    git commit -am “增加:合并内容”
    git push --set-upstream origin mergedemo

    切换到master分支上
    git checkout master

    合并命令

    git merge [待合并的分支名称]
    git merge mergedemo

    说明:把某一个分支的内容合并到当前的分支上

    09 分支的合并产生的冲突问题

    场景:多人协作开发的时候,大家同时修改同一个文件的时候
    比如:刚刚的mergedemo分支,修改了文件test.txt的第三行
    ,另外的mergedemo2分支也修改了第三行。

    ***工作中:master分支 是用来合并的,是不能在上面开发的

    这里为了简单的测试,使用master和mergedemo制造冲突

    新增master 的test.txt文件的第四行
    liuge36@liuge36lh MINGW64 ~/Desktop/lh/AutoTest (master)
    $ cat test.txt
    11111111111111111
    2222222222222222222
    这里是需要合并到Master的内容
    这是master分支上的内容 # 这里是新增的

    修改之后,提交到远程仓库

    git add test.txt
    git commit -am “add master test.txt”
    git push

    这样,远程仓库,就有新的master代码了

    切换到master分支上

    git checkout mergedemo
    cat test.txt
    是没有master的第四行内容的

    我们也添加mergedemo分支自己的内容
    vim test.txt

    11111111111111111
    2222222222222222222
    这里是需要合并到Master的内容
    这是mergedemo分支上添加的内容 #这是mergedemo分支的内容

    同样修改之后,提交到远程仓库

    git add test.txt
    git commit -am “add mergedemo分支上的内容”
    git push

    推送成功之后,我们master分支的test.txt文件和mergedemo分支的text.txt文件都不一样了,都是被修改了

    假如,这个时候,在master分支上将mergedemo分支合并过来

    git merge mergedemo命令进行合并
    $ git merge mergedemo
    Auto-merging test.txt
    CONFLICT (content): Merge conflict in test.txt
    Automatic merge failed; fix conflicts and then commit the result.

    查看合并后的文件

    $ cat test.txt

    11111111111111111
    2222222222222222222
    这里是需要合并到Master的内容
    <<<<<<< HEAD
    这是master分支上的内容
    =======
    这是mergedemo分支上添加的内容
    >>>>>>> mergedemo
    
    -----结果说明-------
    <<<<<<< HEAD
    这是master分支上的内容
    =======
    这是mergedemo分支上添加的内容
    >>>>>>> mergedemo
    --------------------
    

    现在进行操作这个文件

    修改为:

    11111111111111111
    2222222222222222222
    这里是需要合并到Master的内容
    
    这是master分支上的内容,,,,,这是mergedemo分支上添加的内容
    

    解决分支冲突之后,再次提交

    git add test.txt
    git commit -m “解决合并冲突”

    git push

    10 项目的版本操作

    场景:上线失败,我们需要将master分支回退到上一个版本

    回退到上一个版本

    先修改test.txt文件

    11111111111111111
    2222222222222222222
    这里是需要合并到Master的内容
    
    这是master分支上的内容,,,,,这是mergedemo分支上添加的内容
    

    version111

    git add .
    git commit -am "V1"
    git push
    
    --------到这里你就得到一个V1版本--------------
    
    同样的操作,去得到V2版本
    
    这样就有V1和V2两个版本
    

    但是这个时候,上线的V2版本有bug,想要回退到V1
    操作如下:

    先本地回退,再推送到远程
    git reset --hard HEAD^
    --------
    $ git reset --hard HEAD^
    HEAD is now at 1f83679 V1
    -------
    
    这样就回退到V1版本
    

    假如,想要回退上几个版本怎么办呢?

    指定回退到上100个版本
    git reset --hard HEAD~100
    

    回到指定版本

    # 先 查看历史版本的id
    git reflog
    git reset --hard +id
    

    如有问题,请留言指教

  • 相关阅读:
    PAT 甲级 1074 Reversing Linked List (25 分)(链表部分逆置,结合使用双端队列和栈,其实使用vector更简单呐)
    (转载)文献可视化--vosviewer入门
    给出先序和中序,给一个数找到位置并输出它左子树里最大的数
    PAT 甲级 1073 Scientific Notation (20 分) (根据科学计数法写出数)
    python flask框架学习(三)——豆瓣微信小程序案例(二)整理封装block,模板的继承
    第一章 概述
    Mybatis最入门---数据库的下载与安装
    前端页面——Cookie与Session有什么差别
    有限状态机(FSM)的Java 演示
    windows使用技巧和工具(后面可能更新linux)
  • 原文地址:https://www.cnblogs.com/liuge36/p/12614750.html
Copyright © 2011-2022 走看看