Git使用入门

Git使用入门

1.什么是Git?

Git是一个强大的分布式版本控制工具,最初由linus管理linux内核项目时开发,在项目开发的时候使用git可以存储代码、跟踪修订历史记录、合并代码更改,并在需要时恢复为较早的代码版本。

2.Git的三个概念

1.工作区

实际开发中能在git仓库目录下看到的目录

2.暂存区

英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。

3.版本库

工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。

3.安装git

1
2
3
4
#在ubuntu/debian上可以使用以下命令来安装git
sudo apt install git
#基于archlinux
sudo pacman -S git

4.配置git

git在使用之前需要初始化一些配置信息包括姓名和邮箱,用于日后管理项目提交commit时能很明显的看到是谁提交的commit

1
2
git config --global user.name "DreamAccount"
git config --global user.email "fragmented666@gmail.com"

5.git常用的命令

1.初始化git仓库
1
git init git-repo-name #将git-repo-name替换成自己需要创建的git项目仓库的名字
2.提交代码
1
2
3
4
#将代码从工作区加入到暂存区
git add .
#将代码从暂存区加入到版本库
git commit -m "update"
3.回退版本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#舍弃当前提交,回滚到指定的版本上
git reset --hard id

#将之前提交的代码从版本库重新放到暂存区
git reset --soft id

#将之前提交的代码重新放到暂存区
git reset --mixed id

#将暂存区的代码重新放到工作区
git reset .

#指定一个版本进行重做
git revert id
4.git分支操作
1
2
3
4
5
6
7
8
9
10
11
12
#查看当前分支
git branch

#基于当前分支创建一个新的分支
git branch ${BRANCH_NAME}

#创建一个分支将切换到该分支下
git checkout -b ${BRANCH_NAME}

#切换分支
git checkout ${BRANCH_NAME}

5.git远程操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#查看git远程主机的信息
git remote -v

#添加远程主机
#git remote add <远程主机名> <代码仓库地址>
git remote add origin https://github.com/DreamAccout/monitor.git


#删除远程分支
#git push <远程主机名> --delete <远程分支名>
git push origin --delete remoteBranchName

#推送到本地分支到远程分支(如果改远程分支不存在则进行创建)
#git push <远程主机名> <本地分支名>:<远程分支名>
git push -u origin master:master

#将远程分支克隆到本地
#git fetch <远程主机名> <远程分支名>:<本地分支名>
git fetch origin master:dev

#将远程分支合并到本地相当于git fetch && git merge
#git pull <远程主机名> <远程分支名>:<本地分支名>
git pull origin master:dev

#克隆一个远程仓库
git clone https://github.com/DreamAccount/monitor.git
6.git冲突解决

在实际开发中,可能会存在以下情况,开发者在分支master上修改了文件a并将文件a提交到了代码仓库中,同时开发者在dev分支上也修改了文件a,这个时候如果我们在其中一个分支上合并另一个分支,这个时候就会引发冲突,因为git不知道我们实际要保留哪个修改记录,这个时候就需要开发者自行修改,然后重新git add . && git commit -m “update“重新提交代码。
实际冲突的文件git将会用标识符进行标记

1
2
3
4
5
6
7
<<<<<<< HEAD
//我是dev分支的修改记录
=======
//我是master分支的修改记录
>>>>>>> master
#<<<<<到=====是当前分支修改的内容
#=====到>>>>>>是合并分支修改的内容
7.git rebase用法

在开发过程中我们可能会出现代码提交历史太多,有很多个版本只进行了小的修改,这个时候我们经常会将多个提交历史进行合并

1
2
#将当前版本往前三个版本提交历史记录进行合并。
git rebase -i HEAD~3

有的时候我们如果合并一个分支会出现git提交历史记录变得分叉,显得十分不美观,这个时候就可以使用git rebase命令,将另一个分支的提交记录复制到本分支上。

1
git rebase dev
8.如何保存当前工作状态

在实际的开发中,常常会出现这样的场景,你正在dev分支上开发项目,这个时候有个人和你说主线master上存在bug需要立马修复,这个时候你又不想提交代码,但是你不提交代码这个时候切换到master分支上你会发现master分支上也存在你加入到暂存区和工作区的代码,这个时候我们就需要用git stash 将工作区和暂存区的代码隐藏保存起来(官网是这样说的,但是实际上只能保存暂存区的代码,如果需要保存工作区的代码需要指定-u参数),保存成功后再切换到master分支上修复bug。

1
2
3
4
5
6
7
#将当前暂存区和工作去的文件进行隐藏保存
git stash save "stash file" -u

#将指定保存的文件进行恢复
git stash pop #默认使用最近一个进行恢复


9.git reset和git revert的区别

git reset是回滚到指定的版本,并将指定版本后面的记录全部舍弃,但是git revert是指定一个版本进行重做,并不影响后面的版本,如果后面的版本对回退的版本提交文件也进行了修改,则revert就会引发冲突。

6.搭建git服务器

1.创建一个git用户
1
useradd -m -k /dev/null -s /usr/bin/git-shell git
2.配置密钥
1
2
3
4
5
6
7
#生成密钥
ssh-keygen -t rsa -b 2048 -C "git-repo key" -f git-repo

#将公钥配置到git用户的ssh验证密钥
sudo cat git-repo.pub > /home/git/.ssh/authorized_keys

#将私钥保留在本地
3.指定一个目录为git仓库目录
1
2
3
#这里使用/srv/git-repo为git仓库目录
#将该目录的权限设为git用户
sudo chown git:git /srv/git=repo -R
4.创建一个远程git仓库
1
2
#创建一个裸库
git init --bare monitor.git #将monitor.git换成自己的目录
5.将远程仓库克隆到本地
1
2
#在这之前你必须要先配置好私钥
git clone git@example.com:/home/git/monitor.git

7.配置github为远程仓库

1.将生成的私钥保留到本地

1
2
3
4
5
6
7
8
#将生成的私钥复制到.ssh目录下。
#生成的ssh密钥一般会自动在.ssh目录下,这个时候只需要将公钥id_rsa.pub上传到github上即可
#编辑.ssh/config (如果没有直接创建)
Host github #模板的名称
Hostname github.com #指定的远程主机名
Port 22 #指定的ssh端口
User git #指定的登录的用户
Identityfile ~/.ssh/private_keys/github #指定的登录的私钥,根据实际情况进行修改

2.将生成的公钥上传到github中
配置公钥到github

3.测试

1
2
3
4
5
6
7
ssh -T github
#如果成功会出现以下提示
Hi DreamAccount! You've successfully authenticated, but GitHub does not provide shell access.


#如果配置了ssh模板可以直接
ssh -T github(配置模板的名称)

4.创建github远程仓库
github remote repository
5.克隆远程仓库到本地

1
2

git clone github:DreamAccount/monitor.git#将DreamAccount替换成自己的用户名,monitor替换成自己的仓库名。

如果需要将代码推送到github上,先将代码进行提交到版本仓库只需要git push即可
例如我有一堆代码存放在dir目录下,如果需要将代码拷贝到刚刚克隆下的仓库,然后提交

1
2
cp dir/* monitor/
cd monitor && git add . && git commit -m "update release " && git push

Git使用入门
https://dreamaccount.github.io/2022/12/20/Git使用入门/
作者
404NotFound
发布于
2022年12月20日
许可协议