Git是一个分布式版本控制系统,它主要用于跟踪和管理软件项目的源代码。它可以帮助开发人员在不同的团队成员之间协同工作,记录代码的修改历史,轻松地回滚到以前的版本,以及合并不同的代码分支。
Git分为三个区域:
Git的主要作用包括:
在centos上安装Git
yum -y install git
git
目录[root@jenkins ~]# mkdir /cangku
[root@jenkins ~]# cd /cangku/
[root@jenkins cangku]# git init
Initialized empty Git repository in /cangku/.git/
[root@jenkins cangku]# ls -a
. .. .git
[root@jenkins cangku]# git status
# On branch master
#
# Initial commit
#
nothing to commit (create/copy files and use "git add" to track)
当前是在master分支上;当前工作环境是干净的;可以使用git add
将文件添加到暂存区。
[root@jenkins cangku]# echo "hello git" >> file1.txt
[root@jenkins cangku]# ls
file1.txt
[root@jenkins cangku]# git add file1.txt
[root@jenkins cangku]# git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use "git rm --cached ..." to unstage)
#
# new file: file1.txt
#
状态内容为:暂存区有一个新文件,如果你想取消提交可以执行那条命令。
[root@jenkins cangku]# git commit -m "第一次提交 --v1"
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
fatal: unable to auto-detect email address (got 'root@jenkins.(none)')
会发生报错,会让你配置邮箱和你是谁:将邮箱和名称替换成你自己的。
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
重新提交文件:
[root@jenkins cangku]# git commit -m "第一次提交 --v1"
[master (root-commit) d8c043e] 第一次提交 --v1
1 file changed, 1 insertion(+)
create mode 100644 file1.txt
git log
查看你的提交情况[root@jenkins cangku]# git log
commit d8c043eda453085620ce8bcc6a3d27ca0d16f34e
Author: Your Name >
Date: Tue Aug 1 17:37:42 2023 +0800
第一次提交 --v1
分别记录了代码提交ID,提交人和时间。
[root@jenkins cangku]# echo "hello world" >> file1.txt
[root@jenkins cangku]# git add .
[root@jenkins cangku]# git commit -m "第二次提交 --v2"
[master 7ed5fa3] 第二次提交 --v2
1 file changed, 1 insertion(+)
[root@jenkins cangku]# git log
commit 7ed5fa310d081176f57661969d4b8b21a718c477
Author: Your Name >
Date: Tue Aug 1 17:45:28 2023 +0800
第二次提交 --v2
commit d8c043eda453085620ce8bcc6a3d27ca0d16f34e
Author: Your Name >
Date: Tue Aug 1 17:37:42 2023 +0800
第一次提交 --v1
[root@jenkins cangku]# cat file1.txt
hello git
hello world
[root@jenkins cangku]# git reset --hard d8c043eda
HEAD is now at d8c043e 第一次提交 --v1
回退到哪个版本输入哪个版本的id
[root@jenkins cangku]# cat file1.txt
hello git
回退过去的代码我又想恢复过来怎么办?
[root@jenkins cangku]# git reflog
d8c043e HEAD@{0}: reset: moving to d8c043eda
2e26871 HEAD@{1}: commit: 第三次提交 -v3
7ed5fa3 HEAD@{2}: commit: 第二次提交 --v2
d8c043e HEAD@{3}: commit (initial): 第一次提交 --v1
v3
版本[root@jenkins cangku]# git reset --hard 2e26871
HEAD is now at 2e26871 第三次提交 -v3
[root@jenkins cangku]# cat file1.txt
hello git
hello world
hello
已经恢复到v3
版本
Git分支是一个版本控制机制中的概念,它允许你在同一个代码库中并行开发多个代码线路。
分支通常用于分离出不同的开发线,如稳定版、开发版、实验版等,或者为特定功能创建独立的开发线路。
[root@jenkins cangku]# git branch
* master
dev
[root@jenkins cangku]# git branch dev
[root@jenkins cangku]# git branch
dev
* master
dev
[root@jenkins cangku]# git checkout dev
Switched to branch 'dev'
[root@jenkins cangku]# git branch
* dev
master
创建分支时会将之前代码也创建到新分支上
[root@jenkins cangku]# vim hehe.py
[root@jenkins cangku]# cat hehe.py
第一次呵呵呵
[root@jenkins cangku]# git add .
[root@jenkins cangku]# git commit -m "第一次呵呵呵 -v1"
[dev 750ec9f] 第一次呵呵呵 -v1
1 file changed, 1 insertion(+)
create mode 100644 hehe.py
[root@jenkins cangku]# echo "第二次呵呵呵" >> hehe.py
[root@jenkins cangku]# git add .
[root@jenkins cangku]# git commit -m "第二次呵呵呵 -v2"
[dev 3d8cb2a] 第二次呵呵呵 -v2
1 file changed, 1 insertion(+)
dev
分支内容[root@jenkins cangku]# git checkout master
Switched to branch 'master'
[root@jenkins cangku]# ls
file1.txt
test
test
分支上为file1.txt文件添加新内容(省略测试部分)master
分支test
分支内容合并到master
分支(需要先切到master分支)[root@jenkins cangku]# git branch
dev
* master
[root@jenkins cangku]# git branch test
[root@jenkins cangku]# git checkout test
Switched to branch 'test'
[root@jenkins cangku]# ls
file1.txt
[root@jenkins cangku]# echo "hello hehehe" >> file1.txt
[root@jenkins cangku]# git add .
[root@jenkins cangku]# git commit -m "这是一次修复 -v1"
[test 2fd525a] 这是一次修复 -v1
1 file changed, 1 insertion(+)
[root@jenkins cangku]# git checkout master
Switched to branch 'master'
[root@jenkins cangku]# git merge test
Updating 2e26871..2fd525a
Fast-forward
file1.txt | 1 +
1 file changed, 1 insertion(+)
[root@jenkins cangku]# cat file1.txt
hello git
hello world
hello
hello hehehe
dev
分支master
分支合并到dev
分支master
分支dev
分支内容合并到master
分支[root@jenkins cangku]# git checkout dev
Switched to branch 'dev'
[root@jenkins cangku]# git merge master
Merge made by the 'recursive' strategy.
file1.txt | 1 +
1 file changed, 1 insertion(+)
[root@jenkins cangku]# ls
file1.txt hehe.py
[root@jenkins cangku]# git checkout master
Switched to branch 'master'
[root@jenkins cangku]# ls
file1.txt
[root@jenkins cangku]# git merge dev
Updating 2fd525a..0a18968
Fast-forward
hehe.py | 2 ++
1 file changed, 2 insertions(+)
create mode 100644 hehe.py
[root@jenkins cangku]# cat file1.txt
hello git
hello world
hello
hello hehehe
[root@jenkins cangku]# cat hehe.py
第一次呵呵呵
第二次呵呵呵
当一个分支使用完不需要了需要删除的时候可以使用以下命令
[root@jenkins cangku]# git branch -d test
Deleted branch test (was 2fd525a).
[root@jenkins cangku]# git branch
dev
* master
[root@jenkins cangku]# git branch -D test
到此一个简单模拟的项目开发的流程结束!