首页 > 其他分享 >Git高级

Git高级

时间:2023-06-28 21:46:16浏览次数:33  
标签:origin git 仓库 高级 dev Git 本地 分支

目录

一、git 多分支

# 分支操作
0 查看分支
git branch      # 本地
git branch -a   # 本地和远程
1 创建分支
git branch dev

3 切换分支
git checkout 分支名字

4 删除分支
git branch -d 分支名

5 合并分支 操作步骤
	git branch dev
    git checkout dev
    新增一个文件 xx.txt,加入一行
    git add .
    git commit -m 'dev分支增加了xx.txt'
    修改lqz.txt  加入一样
    git add .
    git commit -m 'lqz.txt 加入内容'
    
    git checkout master
    # 切回到主分支(增的东西,都没有)
    	# 新增的文件,看不到
   	# 把dev合并到master上,要在master身上
    git merge dev

  # 主分支和dev分支就一样了

二、git远程仓库

我们要协同开发,代码要提交到远程仓库,可以使用gitee,github,gitlab,本文以gitee为例

#1 以gitee为例,注册账号

#2 在账号中,新建一个仓库 [本地仓库,推送到远程仓库]
#3 如图所示  ----> [如果创建远程仓库不是空的,就会有问题]
#4 本地仓库,推到远端
	-本地已经有了
    # git remote 查看有哪些远程仓库
    # git remote remove origin   # 删除本地跟远程仓库的链接关系
    cd lqz
    # git remote add 远程仓库名字  远程仓库地址
	git remote add origin https://gitee.com/liuqingzheng/lqz.git
	git push origin master  # 把本地仓库中所有的内容,提交到远程仓库
    # 弹出框,要求输入用户名和密码(保存在Windows的凭据管理中)
    
    # 本地仓库代码就会被推送到远端了

    
# gitlab的两次链接命令
git remote add gitlab_origin http://192.168.1.252/zjy/my-project.git
git remote add gitlab_origin ssh://[email protected]:9922/zjy/my-project.git

三、ssh方式链接远程仓库

# 刚刚的远程仓库,推送,走的都是https的协议,需要用户名密码

# 加密方式
	-对称:AES,DES
   	-非对称:
# 公司里,常用ssh协议方式推送代码
	[email protected]:liuqingzheng/lqz.git
    -它不需要用户名密码,而需要:公钥私钥【非对称加密】
    -在本地机器生成公钥[可以给任何人]和私钥[自己留着]
    
    
# 具体操作
	-1 先删除原来使用https链接的remote
    -2 增加一个跟远程仓库的链接 origin ---> 是ssh协议的
    	git remote add origin [email protected]:liuqingzheng/lqz.git
            
    -3 本地机器,生成公钥私钥[使用命令生成]
    	-https://help.gitee.com/base/account/SSH%E5%85%AC%E9%92%A5%E8%AE%BE%E7%BD%AE
    	-打开cmd 执行 ,一路回车
        	ssh-keygen -t ed25519 -C "[email protected]"
        - 用户家路径,生成 .ssh文件夹,里面有公钥和私钥
			- 私钥文件 id_ed25519
			- 公钥文件 id_ed25519.pub
   - 4 把公钥配置在gitee上【打开公钥】--> 可以配多个
		-https://gitee.com/profile/sshkeys
    
    -5 以后放心大胆的
    	git push origin master # 提交代码即可
    
    
# 你在公司中
	-1 用gitlab,可能你自己注册账号,也可能别人直接给你注册号了,你直接登录,修改密码即可
    -2 登录gitlab能看到代码仓库,仓库的所有者[你们领导],会把你加成这个仓库的【开发者】
    -3 基于这个仓库继续开发,提交代码
    -4 ssh方案:本地生成公钥私钥【本地有了,就不用重新生成了】
    -5 把公钥,配置在自己的gitlab账号里面
    -6 以后就免密对仓库有操作权限了
    

四、协同开发

# 仓库管理员[领导],创建仓库,邀请成员,成为开发者
	-管理 ---> 仓库成员管理 ---> 
# 被邀请的人,登录自己账号,就能看到仓库了

4.1 多人协同开发

# 1 从远端克隆代码
# 2 进到文件夹中,改东西
# 3 git add .
# 4 git commit -m '改了一行'
# 5 git pull origin master  # 拉去仓库中最新的代码   否则提交不了
# 6 git push origin master


# 多人操作统一仓库,就是协同开发,但是咱们这个操作,没有遇到冲突

五、冲突解决

# 出现冲突的原因
	-1 多人在同一分支,修改了同一个地方的代码,出现的冲突
    -2 分支合并时出冲突
    
# 1 多人统一分支开发,修改了同样的代码
	
	-某人修改了1.txt的第四行,提交了
    -我操作:
    	-修改了1.txt第四行
        -git add .
        -git commit -m ' 注释'
        -git pull origin master
        -出冲突了
            <<<<<<< HEAD
            我的代码
            =======
            别人的代码
            >>>>>>> af38b6ae4d9e126bd88b9b039e475e8ddbc23510
	   -处理冲突
    		-选择要保留的代码,要么删自己的,要么删别人的,要么都留着
       -重复操作
    	git add .
        git commot -m '解决冲突' 
        git push origin master
    
    
    
# 大原则,多人同一分支开发,如果尽量避免冲突,要不停的拉去代码


# 分支合并出冲突
	  # 新建dev分支,切换,增加代码
    	git branch dev
        git checkout dev
        在1.txt最后一行增加 lqz nb1
        git add 
        git commit -m '注释'
      # 切换回主分支操作
    	git checkout master
         在1.txt最后一行增加 lqz nb2
        git add 
        git commit -m '注释'
      # 合并分支
    	-git merge dev
        -出冲突了
            <<<<<<< HEAD
            gitlab的第二行
            =======
            gitlab的第一行
            >>>>>>> dev
        -解决冲突,直接删除掉,或者两个都留下
            gitlab的第二行
            gitlab的第一行
        
      # 解决冲突,提交
    	git add 3.txt
        git commit -m '解决冲突'
      # 提交到远程仓库中
        git remote 
        git pull gitlab_origin master
        git push gitlab_origin master

六、线上分支合并

# 本地分支合并----> git merge dev

# 有主分支---->开发分支开发完了---->合并到主分支


# 远端创建dev分支--->本地没有,拉去一下就有了 git pull origin dev
# 本地创建dev分支---->远端没有,推送一下就有了 git push origin dev

# 远端创建dev分支,拉去到本地
	-远端,在网页中点点点创建分支
    	- 左上角,master ---> 管理---> 新建分支
    -本地:git pull origin dev
    -切换过去才能看到:git checkout dev
    
# 本地和远端现在都有了master和dev分支
	-本地的dev分支,删除东西
    -提交到本地版本库
    -推送到远程  git push origin dev
    
    -# 远程分支合并
    	-组员新建pull request---> pr--->(merge request)mr
        -组长审核--->同意---> dev就被合并到master

七、远程仓库回滚(你不要去做)

# 本地 
git reset --hard 最初状态
git reset --hard 88aa1e64fa288af495ab6c283b139b7f7f0a237a

git push origin master -f


# 本地代码要提交,本地版本库的内容必须是最新的,git pull 就是最新

八、为开源项目贡献代码

# 1  gitee 找一个开源项目
# 2 点 fork--->复制一份到你的仓库中
# 3 在咱们仓库中,clone--->修改代码--->提交代码--->自己仓库
# 4 在自己仓库中提交pr--->我们本地dev分支申请提交到作者的dev分支
#5 等作者审核过,同意,你就是贡献者了

九、git工作流,git pull,git fetch和变基

# git 工作流:git flow--->分支方案
	-我们没有采用
    
    
# git pull和git fetch
	-git pull 从远程仓库拉取代码:从远程获取最新版本并merge到本地
    -git fetch 从远程仓库拉取代码:会将数据拉取到本地仓库 - 它并不会自动合并或修改当前的工作
    -git pull =git fetch +merge
    
    
    
# 变基 rebase
	-1 多个提交记录整合成一个
    -2 解决多次合并分叉问题
	

十、pycharm操作git

# 实际开发中,可以完全一点命令都不敲,通过pycharm 点点点
# pycharm 配置好git

# clone 代码

# git add 命令

# git commit 
# git push
# git 分支操作

# 实用的,代码对比
	git reflog
    git log 命令

如果点击了git后没有反应,需要去pycharm的设置中配置好到git的启动文件的路径,看是否正确。

标签:origin,git,仓库,高级,dev,Git,本地,分支
From: https://www.cnblogs.com/zjyao/p/17512629.html

相关文章

  • 这份Github标星30K的神仙面试笔记 ,包含了所有Android中高级大厂知识面试题!!!
    作为一个Android程序员,你平时总是陷在业务开发里,每天噼里啪啦忙敲着代码,上到系统开发,下到Bug修改,你感觉自己无所不能。然而偶尔的一次聚会,你听说和自己一起出道的同学早已经年薪50万,而自己却囊中羞涩。于是你也想看看新机会,找个新平台,好好发展。但是面试的时候,当那个笑眯眯的......
  • gitignore 忽略文件不生效处理
    在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中.gitignore文件的方法。但是有时候在项目开发过程中,因为忘记加上.gitignore忽略文件,导致编译的代码已经上传到Git服务器上面了,这时候即使把Git仓库上面的文件夹删掉了也没有用,因为已经被Gittrack......
  • 使用宝塔webhook快速部署github仓库上的项目
    1、宝塔安装webhook点击添加Hook,输入如下命令。cd/www/wwwroot/project_namegitpull点击查看密钥,可以得到hooks的地址和密钥。2、Github上设置Webhooks填入上面得到的地址和密钥 3、为了git拉取免登录,需要在服务器安装ssh证书ssh-keygen-trsacat~/.ssh/id_r......
  • git 根据版本回滚
    步骤一: 步骤二: 步骤三: ......
  • git 常用命令
    初始仓库[email protected]:username/project_name.gitclone相当于svn的checkout,并将本地分支与远程分支链接起来添加远程库[email protected]:username/project_name.gitusername,改成相应用户名;project_name,改为工程名字添加后,可以在......
  • eclipse 添加.gitignore
    eclipse创建的git工程,默认在根目录下就有.gitignore文件有的eclipse没有显示.gitignore,可以通过设置过滤来显示隐藏文件。倒三角---->filters—>不要勾选.*resources##.gitignore的作用.gitignore,属于git,用于忽略某些中间文件,比如.class,.apk,.classpath等,这样在以后的git提交中......
  • git 入门、reset的3种模式、回滚文件、还原文件、变基、merge
    git基础知识盗用网上的一张图,git有工作目录、索引区(也叫暂存区)、历史区,这3个区,一定要记在脑子里,基本上git所有的操作都是操作这3个区。新建一个文件并提交的一般操作是,新建文件gitadd到索引区gitcommit到历史区(添加-a参数会自动提交到索引区,相当于第2步+第3步)gitreset有3种......
  • mac屏幕录制截图软件-Snagit2023
    Snagit2023是一款功能强大的Mac屏幕录制和截图软件。它为用户提供了丰富的工具和功能,让用户能够轻松地捕捉屏幕上的任何内容,并进行编辑和分享。→→↓↓载Snagit2023mac版 首先,Snagit2023具有简洁直观的用户界面,使用户能够快速上手。它提供了全屏、窗口、区域和滚动截图等多......
  • 11-gorm-V2-04-高级查询
    @目录1.用Struct或Map接收数据1.1Find到Struct1.2Find到Map2.子查询3.Group/Having3.1Group完整示例3.2Having4.变量4.1使用sql.Named定义4.2使用map定义变量5.用Rows()迭代6.查钩子7.Pluck(单列查询)8.Scopes(调用查询函数)8.1使用8.2示例9.Count1.用Struct或Map......
  • 2023年最新Android Framework源码高级笔记+学习路线图+硬核资料库,跪着啃完了。。。
    虽然疫情已经过去,餐饮、旅游一些实体经济迅速回暖,但是互联网的寒冬却还没有过去,很多大厂都在裁员,裁员比例还挺高,我们一千多人的公司就直接裁掉30%。今年的各大公司基本只有两个目标:一个是营收,那些投入产出比不高的项目或者事情都暂时搁置,可做可不做的就不做;另外一个就是降本增效,通......