Git
准备一台主机,安装应用git
[root@git ~]# yum -y install git
[root@git ~]# rpm -ql git 查看版本信息
[root@git ~]# git
[root@git ~]# mkdir /yy000 创建目录
使用git指令,一定要cd到初始化之后的目录
cd到yy000目录中使用init指令促使初始化
[root@git ~]# cd /yy000/
[root@git yy000]# ls
[root@git yy000]# git init
初始化空的 Git 版本库于 /yy000/.git/
[root@git yy000]# ls -a
. .. .git
[root@git yy000]# cd ./git
-bash: cd: ./git: 没有那个文件或目录
[root@git yy000]# cd .git/
[root@git .git]# ls
branches config description HEAD hooks info objects refs
[root@git .git]# cd ..
[root@git yy000]# vim Test.java 写一个java文件
public class Test{
public static void main(String [] args){
System.out.println("hello world");
}
}
[root@git yy000]# git log 查看日志
fatal: bad default revision 'HEAD'
[root@git yy000]# git add Test.java 添加到缓存
[root@git yy000]# git commit -m "新建了一个Test.java文件,这是新建的" 放到仓库,后面进行说明
需要自己创建账户邮箱...
[root@git yy000]# git config --global user.name chz 创建账户
[root@git yy000]# git config --global user.email 18009413571@163.com 创建邮箱
修改Test.java文件,添加一行注释
[root@git yy000]# echo "//这是一行java注释,不会被编译,能提交文件的可读性" > Test.java
[root@git yy000]# git add .
[root@git yy000]# git commit -m "这是第二次提交项目"
[master(根提交) af919f2] 这是第二次提交项目
1 file changed, 1 insertion(+)
create mode 100644 Test.java
[root@git yy000]# git log
commit af919f2cc55c8500502b205e3199c0d1830b7fdf
Author: chz <18009413571@163.com>
Date: Thu Jul 25 10:51:51 2024 +0800
这是第二次提交项目
安装git
创建了git仓库
创建文件并且提交文件
git init ,git add . (将文件提交到缓存)git commit -m 说明, git log(查看历史)
[root@git yy000]# echo "//我又加了一个注释" >> Test.java[root@git yy000]# cat Test.java
//这是一行java注释,不会被编译,能提交文件的可读性
//我又加了一个注释
[root@git yy000]# git add
没有指定文件,也没有文件被添加。
也许您想要执行 'git add .'?
[root@git yy000]# git add .
[root@git yy000]# git commit -m "将缓存中的内容交到仓库"
[master a978a8d] 将缓存中的内容交到仓库
1 file changed, 1 insertion(+)
[root@git yy000]# git log
commit a978a8d3e20c8403a1c27fa15ce8a3b7437448f0
Author: chz <18009413571@163.com>
Date: Thu Jul 25 11:11:17 2024 +0800
将缓存中的内容交到仓库
commit af919f2cc55c8500502b205e3199c0d1830b7fdf
Author: chz <18009413571@163.com>
Date: Thu Jul 25 10:51:51 2024 +0800
这是第二次提交项目
[root@git yy000]#
查看当前仓库的分支[root@git yy000]# git branch
* master
当前只有一个master分支,这个分支又叫主分支,当工作完成后,所有的分支都会合并到主分支
要求abc三个人实现一个接口,一个文件在同一时间只能被一个用户编辑
[root@git yy000]# git branch abranch
[root@git yy000]# git branch
abranch
* master
[root@git yy000]# git checkout abranch [root@git yy000]# ls
Test.java
[root@git yy000]# cat Test.java
//这是一行java注释,不会被编译,能提交文件的可读性
//我又加了一个注释
//wozaitiajia
切换到分支,修改内容。[root@git yy000]# echo "//我是a员工,我不骄傲" >> Test.java
[root@git yy000]# cat Test.java
//这是一行java注释,不会被编译,能提交文件的可读性
//我又加了一个注释
//wozaitiajia
//我是a员工,我不骄傲
[root@git yy000]# git add .
[root@git yy000]# git commit -m "a员工提交的内容"
[abranch 9288330] a员工提交的内容
1 file changed, 1 insertion(+)
切换到abranh分支上
切换到分支 'abranch'
[root@git yy000]# git branch 查看
* abranch
master
切换到master上,没有看到改动[root@git yy000]# git checkout master
切换到分支 'master'
[root@git yy000]# git branch
abranch
* master
[root@git yy000]# cat Test.java
//这是一行java注释,不会被编译,能提交文件的可读性
//我又加了一个注释
//wozaitiajia
切换回到abranch,可以看到修改
创建b分支,修改内容后切换到a分支可以看到修改[root@git yy000]# git checkout -b bbranch
切换到一个新分支 'bbranch'
[root@git yy000]# git branch
abranch
* bbranch
master
[root@git yy000]# cat Test.java
//这是一行java注释,不会被编译,能提交文件的可读性
//我又加了一个注释
//wozaitiajia
//我是a员工,我不骄傲
[root@git yy000]# echo "//我是b员工" >> Test.java
[root@git yy000]# git branch
abranch
* bbranch
master
[root@git yy000]# git checkout abranch
M Test.java
切换到分支 'abranch'
[root@git yy000]# cat Test.java
//这是一行java注释,不会被编译,能提交文件的可读性
//我又加了一个注释
//wozaitiajia
//我是a员工,我不骄傲
//我是b员工
[root@git yy000]#
[root@git yy000]# git merge abranch 内容合并到master
删除abc三条分支[root@git yy000]# git branch -d abranch
已删除分支 abranch(曾为 a399028)。
[root@git yy000]# git branch -d bbranch
已删除分支 bbranch(曾为 9288330)。
[root@git yy000]# git branch -d cbranch
已删除分支 cbranch(曾为 a399028)。
[root@git yy000]# git branch
* master
在合并的时候,有可能产生文件冲突在合并的时候,两分支也修改了文件,zhangsan分支这个文件,两个分支都发生修改,合并的时候就不清楚哪个分支为主,产生冲突,手动解决
[root@git yy000]# git branch
* master
[root@git yy000]# echo "//我是主分支,我修改了文件0" > Test.java
[root@git yy000]# git checkout -b newbranch
M Test.java
切换到一个新分支 'newbranch'
[root@git yy000]# echo "//我是newbranch分支" > Test.java
[root@git yy000]# cat Test.java
//我是newbranch分支
[root@git yy000]# git checkout newbranch
M Test.java
已经位于 'newbranch'
[root@git yy000]# git status
位于分支 newbranch
尚未暂存以备提交的变更:
(使用 "git add <file>..." 更新要提交的内容)
(使用 "git checkout -- <file>..." 丢弃工作区的改动)
修改: Test.java
未跟踪的文件:
(使用 "git add <file>..." 以包含要提交的内容)
efg
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
[root@git yy000]# git add .
[root@git yy000]# git commit -m "abcd"
[newbranch e68e0a3] abcd
2 files changed, 1 insertion(+), 5 deletions(-)
create mode 100644 efg
[root@git yy000]# git checkout master
切换到分支 'master'
[root@git yy000]# cat Test.java
//这是一行java注释,不会被编译,能提交文件的可读性
//我又加了一个注释
//wozaitiajia
//我是a员工,我不骄傲
//我是b员工
[root@git yy000]# echo "jffbjcdsm" > Test.java
[root@git yy000]# git add .
[root@git yy000]# git commit -m "ccc"
[master 7d86339] ccc
1 file changed, 1 insertion(+), 5 deletions(-)
[root@git yy000]# cat Test.java
jffbjcdsm
主分支有修改,newbranch也有修改
现在要将newbranch合并到主分支
[root@git yy000]# git branch
* master
newbranch
[root@git yy000]# git merge newbranch
自动合并 Test.java
冲突(内容):合并冲突于 Test.java
自动合并失败,修正冲突然后提交修正的结果。
[root@git yy000]#
[root@git yy000]# cat Test.java
<<<<<<< HEAD
jffbjcdsm
=======
//我是newbranch分支
>>>>>>> newbranch
解决冲突
[root@git yy000]# vim Test.java
[root@git yy000]# cat Test.java
jffbjcdsm
//我是newbranch分支
[root@git yy000]# git add .
[root@git yy000]# git commit -m "111" 合并修正
[master d1ffbbe] 111
[root@git yy000]# git log
小结:git仓库的建立
1.创建目录
2.进入到这个目录 cd /test
3.执行git指令 git init
4.发行一个影藏目录 .git
5.test目录就是工作区域 ,git就是仓库
2.常用的指令
1.在test目录中修改文件
2.git add . 文件名 将修改的文件提交到暂存区域
3.git commit -m """说明" 将暂存的数据保存到仓库
4.git log 查看提交日志
3.分支
1.让项目有多种可能性
2.分支创建,删除合并
1.查看分支 git branch 有几行,就有几个分支,*标注当前所在的分支
2.切换分支的指令,git checkout 分支名
3.新增分支
git branch 新分支名
在跳转分支的时候创建,git checkout -b 新分支名
4.删除分支,要求是分支已经合并
git branch -d abranch
4.分支冲突
将两个分支合并
git checkout abranch
git merge bbranch 在a分支合并b分支
a分支和b分支都对同一个文件进行了修改,并且commit
合并的时候,就是报分支冲突,需要手动选择,再提交就可以了
git拉取
新建一台机器做免密
[root@localhost ~]# ssh-keygen
[root@localhost ~]# ssh-copy-id root@192.168.2.31
克隆192.168.2.31上的资料
[root@localhost ~]# git clone 192.168.2.31:/yy000/.git/
正克隆到 'yy000'...
remote: Counting objects: 25, done.
remote: Compressing objects: 100% (15/15), done.
remote: Total 25 (delta 5), reused 0 (delta 0)
接收对象中: 100% (25/25), done.
处理 delta 中: 100% (5/5), done.
[root@localhost ~]# cd yy000/
[root@localhost yy000]# ls
efg Test.java
[root@localhost yy000]# ls -a
. .. efg .git Test.java
[root@localhost yy000]#
修改内容
设置自己的姓名和邮箱
[root@localhost yy000]# git config --global user.name chz
[root@localhost yy000]# git config --global user.emal chz@163.com
[root@localhost yy000]# touch A.class
[root@localhost yy000]# git add .
[root@localhost yy000]# git commit -m "aaa"
[master 9d9b959] aaa
Committer: chz <root@localhost.localdomain>
您的姓名和邮件地址基于登录名和主机名进行了自动设置。请检查它们正确
与否。您可以通过下面的命令对其进行明确地设置以免再出现本提示信息:
git config --global user.name "Your Name"
git config --global user.email you@example.com
设置完毕后,您可以用下面的命令来修正本次提交所使用的用户身份:
git commit --amend --reset-author
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 A.class
第一次使用对方的项目 git clone
获取更新,就用git pull
git clone 会在当前目录下创建新的仓库
在码云上创建项目
[root@localhost yy000]# cd ..
[root@localhost ~]# git pull
fatal: Not a git repository (or any of the parent directories): .git
[root@localhost ~]# git clone https://gitee.com/chen-xiyu-chz/laochen.git
正克隆到 'laochen'...
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (4/4), done.
[root@localhost ~]# cd laochen
[root@localhost laochen]# ls
[root@localhost laochen]# mkdir -p src/main/java
[root@localhost laochen]# touch src/main/java/Test.java
[root@localhost laochen]# tree src/
src/
└── main
└── java
└── Test.java
2 directories, 1 file
[root@localhost laochen]# git push
warning: push.default 未设置,它的默认值将会在 Git 2.0 由 'matching'
修改为 'simple'。若要不再显示本信息并在其默认值改变后维持当前使用习惯,
进行如下设置:
git config --global push.default matching
若要不再显示本信息并从现在开始采用新的使用习惯,设置:
git config --global push.default simple
参见 'git help config' 并查找 'push.default' 以获取更多信息。
('simple' 模式由 Git 1.7.11 版本引入。如果您有时要使用老版本的 Git,
为保持兼容,请用 'current' 代替 'simple' 模式)
Username for 'https://gitee.com': 账号
Password for 'https://18009413571@gitee.com':
Counting objects: 7, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (6/6), 442 bytes | 0 bytes/s, done.
Total 6 (delta 0), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
To https://gitee.com/chen-xiyu-chz/laochen.git
8d2dc90..a6cd8e6 master -> master
[root@localhost laochen]# vim src/main/java/Test.java
public class Test{
public static void main(String [] args){
System.out.println("hello world");
}
}
[root@localhost laochen]# git add .
[root@localhost laochen]# git commit -m "tj"