GIT分支与gitee码云
一、git分支
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.码云创建空仓库
创建完毕空仓库后,页面出现如下仓库使用方式,我们可以选择HTTPS和SSH两种协议和该仓库通信。
到这里,我们仓库就已经创建好了,接着就是要将本地客户端和服务端连接起来,存在于两种情况
本地已经有一个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上添加
# 修改远程仓库的别名,改为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
# 到码云上查看推送上去的数据