git使用

Posted 李李大冒险

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git使用相关的知识,希望对你有一定的参考价值。

git

1.git介绍

# 代码管理软件
	git
    svn
 
#作用 -- 用来做代码管理【文件管理】
	1.帮助开发者合并开发代码 协同开发
    2.如果出现冲突代码的合并 会提示后提交合并代码的开发者 让其解决冲突
    3.代码版本管理
    
#git 与 svn比较
	svn:集成式管理 服务端挂掉就做不了版本管理 代码合并
    git:分布式管理 服务端挂点 本地还可以继续做版本管理 合并代码【】

2.git、gitee、github、gitlab

# git:
	版本管理软件 装在操作系统之上 有很多命令
#gitee:
	远程仓库 开源代码 私有代码 有网站可以看到有哪些开源代码 通过网站做一些配置
    	国内最大的开源远程仓库
        小公司 -- 使用gitee的私有仓库
#github:
	只有私有仓库 -- 远程代码仓库
#gitlab:
	公司内部的远程仓库

3.git使用流程

3.1 软件安装

# 双击下载 全部next
	任意枯井下右键 多出两个带git标的东西
    cmd中输入 git 有反应 就证明装好了

3.2 git工作流程

# 三个区
	工作区		存放文件的地方【红色】 
    暂存区		工作区的变更 提交到暂存区【绿色】
    版本去		暂存区的内容 提交到版本库【没有颜色】
    
#三个区相互操作
	操作指令

4.git常用

1.文件夹想被git管理 文件夹作为仓库
	先右键某个文件
    git init
    #初始化仓库 当文件夹多出一个.git文件夹【隐藏文件】 这个文件夹不要删 删了就不是git仓库了 之前的版本找不回来 也不能被git管理
    git init 文件名
    #在上一级目录敲
    
2.查看文件变化 在.git所在文件夹下 【只能看暂存区和工作区】
	git status
    #看到两种颜色
    红:在工作区的 没有提交到暂存区
    绿:提交到暂存区了 没有提交到版本库
    没有 :所有东西都在版本库中了 
 
3.把工作区变更到暂存区
	git add 文件名
    git add .  #当前路径下所有变更都提交
   
4.把暂存区所有内容提交到版本库作为一个版本
	git commmit -m \'提交了1.txt\'
    
5.设置作者(全局 局部)
	#全局
    git config --global user.email "邮箱"
    git config --global user.name "姓名"
    #局部
    git config  user.email "邮箱"
    git config  user.name "姓名"
    
6.查看版本库版本信息
	git log	
    git reflog	#精简版
    
7.回到某个版本
	只要被版本管理了 就可以回退到任意版本
    git rest --hard 版本号
---------------------------------------------------------------
8.把工作区的变更 回退 【暂时还没放到暂存区】
	git checkout .
9.把暂存区拉回到工作区
	git reset HEAD

总结:

记住的:
	git add .
    git commit -m \'提交了\'
    git reset --hard 版本号
    
会用:
	git init
    git sataus
    git log
    git reflog
    
了解:
	git checkout .
    git reset HEAD
    git config --global user.email "邮箱"
    git config --global user.name "姓名"
    
"""
1)有红色信息(工作区有内容),就执行 add 
2)全绿信息(内容全部在暂存区),才执行 commit
3)只有被版本库控制的代码,才能被监听,所以可以回滚到任何一个版本
空文件夹不会被git记录
"""

5.git忽略文件

# 咱们项目中,有些文件,或文件夹不想被git管理
	-比如:
    	-node_models
        -.idea
        -xx.pyc  # python 的编译文件
        
        
# 使用步骤
	-1 在仓库目录下  .git 所在目录下   新建  .gitignore
    -2 在里面写忽略文件
    -node_models
    -.idea
    -*.pyc
    -*.log
    -3 写的就会被忽略
 
    -4 已经被管理过的不会被忽略
    
# 忽略文件写法
文件或文件夹名:代表所有目录下的同名文件或文件夹都被过滤
/文件或文件夹名:代表仓库根目录下的文件或文件夹被过滤

例如:
a.txt:项目中所有a.txt文件和文件夹都会被过滤
/a.txt:项目中只有根目录下a.txt文件和文件夹会被过滤
/b/a.txt:项目中只有根目录下的b文件夹下的a.txt文件和文件夹会被过滤
*x*:名字中有一个x的都会被过滤(*代表0~n个任意字符)
空文件夹不会被提交,空包会被提交,包可以被提交(包中有一个init空文件)

6.git多分支

#为什么要有分支 
	我们可以保证 主分支的版本都是可以查看的版本
    我们都在开发分支开发 开发完成 合并到主分支

6.1 分支操作

分支查看 
	git branch
分支创建
	git branch 分支名 
分支切换
	git checkoout 分支名
分支删除
	git branch -d 分支名

6.2 合并分支

#把dev合并进master:
先来到master分支:
	git checkout master
执行合并命令 
	git merge dev
\'\'\'
把dev合并到master身上
合并分支可能会出现冲突
\'\'\'

6.3 公司里分支方案:小公司

1.master分支、dev分支、bug分支 所有人在dev分支开发 开发完合并到主分支
2.master分支、dev分支、bug分支、个人分支 个人在个人分支上开发 开发完成合并到dev分支                             

7.git远程仓库

# 把本地的版本提交到远程仓库
# gitee、github、gitlab
# gitlab的搭建过程:https://zhuanlan.zhihu.com/p/413217715

#luffy项目文件已经写好了一部分 要把代码提交到远程仓库

7.1 操作步骤

本地:

1.在luffy_lzy敲 git init
2.设置忽略文件(.gitignore)
3.git add .
4.git commit -m \'一定能要写详细一点的注释o!\'
提交到版本库 -- 被版本管理了

远程:

1.远程要创建库 :
	1.gitee上创建仓库 右上角+号
    2.填一些信息	保证仓库是空的 不能点初始化readme文件

本地:

1.按照远端提示的步骤操作
2.设置用户和邮箱
3.咱们是已有仓库
	cd luffy_lzy
    # 添加一个远程仓库地址名字叫origin,地址是xxx
    git remote add origin https://gitee.com/li-li-great-adventure/luffy_lzy.git  
     # 把本地的版本库推送到远程仓库
     # 把本地当前所在分支,推送到 origin对应的远程的master上
	 git push origin master
     # 需要输入用户名密码,输入一次,以后就不用输入了(本地保存了:凭据管理)
        
# 如果提交了,再写忽略文件的步骤
    luffy.log--->暂存区---》版本库
    
    .gitignore---》写上忽略,但是不好被忽略,只要luffy.log有变化还是会被监控到
    
    删除luffy.log---》会被监控到---》add,commit---》版本库中已经没有luffy.log
    再出的luffy.log,就不会被管理了

8.ssh方式链接远程仓库

# 刚刚提交代码---》输入了用户名密码---》才可以提交上去----》使用的是https的协议提交的代码
	-它需要输入用户名和密码
    
    
# 咱们要使用ssh方案:需要公钥和私钥   ---》公司里这种方式多
	-私钥在本地保存
    -公钥配置到gitee上
    -以后再提交代码,不需要其他任何认证了,一路绿灯
    
    
    
# 使用步骤:
	- 生成公钥私钥:https://gitee.com/help/articles/4181
    	-在命令窗口中执行,一路回车
        ssh-keygen -t ed25519 -C "1042392645@qq.com" 
        -生成在:C:\\Users\\Administrator\\.ssh  两个文件,一个公钥,一个私钥
   -把公钥,配置在gitee上
   -之前origin对应的地址是 https的,现在要使用ssh提交代码,需要把它删除,再增加成ssh的协议
		git remote remove origin
        git remote add origin git@gitee.com:li-li-great-adventure/luffy_lzy.git
         git push origin(仓库名) master

9.协同开发

#我创建了仓库 我对仓库有各种权限
#在仓库中可以将一起创作项目的人设置为仓库开发者 设置完成 其他人在仓库中就可以就看到我的项目了

#仓库管理员 邀请开发者进入
	邀请的开发者对这个仓库拥有读写权力啊 他们就就可以开发代码 提交
    
#我作为开发者 本地没有代码
	1.把代码从远程仓库克隆下来
    	git clone (项目的ssh地址)git@gitee.com:liuqingzheng/luffy_api.git
    2.使用pycharm打开 配置好解释器 安装依赖
    3.开发代码 开发完 
    git add
    git config user.name lqz
    git config user.email 3@qq.com        
    git commit -m \'注释\'
    git push origin master 推 

10.冲突解决

#出现冲突的原因1
	1.多人在同一分支开发
    2.分支合并出现冲突
    
#多人在统一分支开发冲突
	,-同桌:
    	git pull origin master
        在第一行加入 vcv
        git add . 
        git commit -m \'注释\'
        git push origin master
        
      -我:
    	在第一行加入 yy
        git add .
        git commit -m \'注释\'
        git push origin master
        #冲突了
解决冲突:
	冲突的交投去掉 阅读代码 选择保留自己或者别人的代码再提交
    提交到远程仓库
    
    # 冲突出现的样子:你如果要删除别人的代码,你需要跟别人说一声
    <<<<<<< HEAD   我的代码
    print(\'刘亦菲\')
    =======   它的代码
    print(\'彭于晏\')
    >>>>>>> 6f720edbd84c8744b1c7c10767fb89a5d0fa98f5
    
    接着 :git add .
          git commit -m \'注释\'
          git push origin master
          #冲突了
避免出现冲突:
	勤拉代码*_*
# 冲突出现的原因2 分支合并出冲突
	我:
    	1.创建dev分钟
        	git branch dev
        2.在dev分支项目中第一行加ccc
        3.提交到本地仓库
        
    我:
    	1.在主分支的第一行中加ddd
        2.提交到版本库
        3.在主分支合并代码 
        	git merge dev 
        4.冲突了 解决冲突
        5.再提交代码 到此结束

11.线上分支合并

#线下分支合并 
	git merge  dev
 
#线上  分支合并
	gitee上 新建一个分支 点点点创建出来
   -本地同步远程dev分支
    	git pull origin dev
    	#拉下来 还看不到 只有切过去才看得到
    	git checkout dev
   -在dev上开发
		随便加代码
    	git add .
    	git commit -m \'注释\'
    	#提交到本地的dev
   -推到远端 dev
		git push origin dev 
    -master中没有代码 dev中有提交的 现在要线上分支合并
    -把远程的dev合并金远程的master
    -提交dev 提交rr
    -在网站上 申请提交pull request
    -领导审核 测试通过后点击合并 
    -线上dev就合并进线上的master了
	

12.远程仓库回滚

#最好别用
#想远程的代码 是最初的状态

#步骤:
	1.本地版本回退
    	git reset --hard 版本号
    2.强行推到远端
    	git push origin master -f

以上是关于git使用的主要内容,如果未能解决你的问题,请参考以下文章

git使用-git使用流程

Git认识与使用 Git

Git认识与使用 Git

Git认识与使用 Git

Git认识与使用 Git

Git Manual / Git使用手册 / Git, GitLab, Git Bash, TortoiseGit