02-GIT分支与gitee码云

发布时间 2023-11-01 14:28:58作者: 村尚chun叔

一、git分支

image

1.分支命令实践

1.1 查看分支

默认版本仓库只有一个分支,master
git branch 查看当前我们在哪一个分支,有星星就是你在哪
此例的意思就是,我们有一个叫做 master 的分支,并且该分支是当前分支。
当你执行 git init 的时候,默认情况下 Git 就会为你创建 master 分支。

# git branch
* master

1.2 创建分支

如果我们要手动创建一个分支。执行 git branch 分支名 即可。
# git branch yuchao
# git branch
* master
  yuchao

1.3 切换分支

进入到yuchao分支
# git checkout yuchao
Switched to branch 'yuchao'

# git branch
  master
* yuchao

1.4 yuchao分支下写代码

这里就是公司里的多个程序员,如何开发同一套系统的流程了。
# ls
hello.sh  laoliu.sh
# vim hello_world.sh
# git add .
# git commit -m 'yuchao 打印了一句话'
[yuchao 164de7b] yuchao 打印了一句话 1 file changed, 1 insertion(+) create mode 100644 hello_world.sh
# ls
hello.sh  hello_world.sh  laoliu.sh

1.5 切换到master分支

# git checkout  master
Switched to branch 'master'
# ls
hello.sh  laoliu.sh
# git branch
* master
  yuchao

你此时只有切到yuchao分支,才能看到代码文件

# git checkout yuchao
Switched to branch 'yuchao'
# ls
hello.sh  hello_world.sh  laoliu.sh

1.6 合并分支

回到master主干分支

# git checkout master
Switched to branch 'master'

# git merge yuchao
Updating 049a22f..164de7b
Fast-forward
 hello_world.sh | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 hello_world.sh

# ls
hello.sh  hello_world.sh  laoliu.sh

2.分支冲突

这里是新添加了一个文件,合并数据还好,如果是同一个文件,且同一行数据的修改,岂不是GG?

2.1 再创建一个分支

再创建一个分支zhangsan,搞破坏,且提交代码到版本仓库

创建且切换分支
# git checkout -b zhangsan
Switched to a new branch 'zhangsan'
# echo "我是zhangsan,我就是来搞破坏的,你想咋地吧" >> laoliu.sh
# ls
hello.sh  hello_world.sh  laoliu.sh

[root@www.yuchaoit.cn /home/yuchao/learn_git]#git commit -m 'zhangsan 搞破坏'
[zhangsan 8396a73] zhangsan 搞破坏
1 file changed, 1 insertion(+)

# git log --oneline
8396a73 zhangsan 搞破坏
164de7b yuchao 打印了一句话
049a22f v1 hello.sh
e9547df v3 就玩三次吧
9a3bd4d v2 添加了第二行数据
fb118ba first commit with line 1

2.2 切换回master分支

切换回master分支,别合并,先修改同一个文件,注意提交到版本仓库

# git checkout master
Switched to branch 'master'

# echo "兄弟们,我是master,我在第5行写了一句话" >> laoliu.sh

# git add .
# git commit -m 'master 也修改了laoliu.sh'
[master 5be8816] master 也修改了laoliu.sh
 1 file changed, 1 insertion(+)

# git status
# On branch master
nothing to commit, working directory clean

# git log --oneline -4
5be8816 master 也修改了laoliu.sh
164de7b yuchao 打印了一句话
049a22f v1 hello.sh
e9547df v3 就玩三次吧

2.3 试试这回合并代码呢

master和zhangsan修改了同一行数据

# git merge zhangsan
Auto-merging laoliu.sh
CONFLICT (content): Merge conflict in laoliu.sh
Automatic merge failed; fix conflicts and then commit the result.

# git status
# On branch master
# You have unmerged paths.
#   (fix conflicts and run "git commit")
#
# Unmerged paths:
#   (use "git add <file>..." to mark resolution)
#
#    both modified:      laoliu.sh
#
no changes added to commit (use "git add" and/or "git commit -a")

# cat laoliu.sh
加油啊兄弟们,胜利的曙光就要看到了!!
好的超哥,我一定相信自己,加油努力,给自己一个满意的结果!!

兄弟们,git工具,一般是开发人员用的多,我们运维一般也就是上传,下载代码而已了。
<<<<<<< HEAD
兄弟们,我是master,我在第5行写了一句话
=======
我是zhangsan,我就是来搞破坏的,你想咋地吧
>>>>>>> zhangsan

很明显,这里报错了,出现了冲突

2.4 手工解决冲突即可

这时候你作为技术老大,决定哪一行有用,哪一行没用,还是都保留。
git使用`<<<<<<<<<,=========,>>>>>>>>`符号分割冲突的内容,手动删除这些符号,并修改成你想要的内容

修改结果如下
# cat laoliu.sh
加油啊兄弟们,胜利的曙光就要看到了!!
好的超哥,我一定相信自己,加油努力,给自己一个满意的结果!!

兄弟们,git工具,一般是开发人员用的多,我们运维一般也就是上传,下载代码而已了。
兄弟们,我是master,我在第5行写了一句话
我是zhangsan,我就是来搞破坏的,你想咋地吧

提交新版本即可
# git commit -m 'master fix both modified laoliu.sh'
[master 07f7d81] master fix both modified laoliu.sh


# git status
# On branch master
nothing to commit, working directory clean

# git log --oneline -3
07f7d81 master fix both modified laoliu.sh
5be8816 master 也修改了laoliu.sh
8396a73 zhangsan 搞破坏

2.5 删除分支

注意不能删除当前分支
删除其他即可

# git checkout master  # 切换到master分支
Already on 'master'

# git branch
* master
  yuchao
  zhangsan

# git branch -d yuchao zhangsan  # 删除yuchao zhangsan两个分支
Deleted branch yuchao (was 164de7b).
Deleted branch zhangsan (was 8396a73).

# git branch
* master

二、gitee码云

1.码云创建空仓库

image

创建完毕空仓库后,页面出现如下仓库使用方式,我们可以选择HTTPS和SSH两种协议和该仓库通信。
image

到这里,我们仓库就已经创建好了,接着就是要将本地客户端和服务端连接起来,存在于两种情况
本地已经有一个git仓库了
本地还没有git仓库

2.配置你的笔记本和码云仓库关联

2.1 采用https协议(https需要输入账号密码)

# 进入你自己的本地仓库,也就是有 .git的目录
# git remote add origin https://gitee.com/yuco/yuchaoit.git

# 推送代码
# git push -u origin "master"
Username for 'https://gitee.com': 877348180@qq.com
Password for 'https://877348180@qq.com@gitee.com':
Counting objects: 24, done.
Compressing objects: 100% (20/20), done.
Writing objects: 100% (24/24), 2.23 KiB | 0 bytes/s, done.
Total 24 (delta 8), reused 0 (delta 0)

remote: Powered by GITEE.COM [GNK-6.3]
To https://gitee.com/yuco/yuchaoit.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.
# 到码云上查看推送上去的数据

# 查看远程仓库的信息
# git remote -v
origin    https://gitee.com/yuco/yuchaoit.git (fetch)
origin    https://gitee.com/yuco/yuchaoit.git (push)

# 删除远程仓库的地址信息,也就是断开你local repo 和 码云repo的关系了
# git remote remove origin
# git remote -v

# 重新设置即可
git remote add origin https://gitee.com/yuco/yuchaoit.git

2.2 配置ssh免密推送代码配置ssh免密推送代码

我们要在客户端生成key,结合gitee实现无密码登录,在linux和windows均可以使用ssh-keygen命令生成,需要注意的是在windows下只能生成rsa加密方式的key。
# cat ~/.ssh/id_rsa.pub
复制公钥到gitee上添加

image

# 修改远程仓库的别名,改为git协议
# git remote -v
origin    https://gitee.com/yuco/yuchaoit.git (fetch)
origin    https://gitee.com/yuco/yuchaoit.git (push)


修改orgin别名的地址
# git remote  set-url origin git@gitee.com:yuco/yuchaoit.git

新增origin命令如下
# git remote  add origin git@gitee.com:yuco/yuchaoit.git

# git remote -v
origin    git@gitee.com:yuco/yuchaoit.git (fetch)
origin    git@gitee.com:yuco/yuchaoit.git (push)

测试加点代码,加上tag,然后再推送试试

# git status
# On branch master
nothing to commit, working directory clean

# echo '鸡你太美 嘿嘿嘿' > caixukun.log
# git add .
# git commit -m '两年半练习生来也'
[master 37e1511] 两年半练习生来也
 1 file changed, 1 insertion(+)
 create mode 100644 caixukun.log

# git tag -a 'v1' -m '第一版菜徐琨'

# 推送数据
# git push origin master
# 到码云上查看推送上去的数据