1、常用命令
| 命令 | 作用 |
|---|---|
| git config --global user.name 用户名 | 设置用户签名 |
| git config --global user.email 邮箱 | 设置用户签名 |
| git init | 初始化本地库 |
| git status | 查看项目修改状态 |
| git add 文件名 | 将文件添加到暂存区 |
| git commit -m '日志信息' 文件名 | 将文件提交到本地仓库 |
| git reflogs | 查看历史记录 |
| git reset --hard | 版本穿梭 |
1.1设置用户签名
设置用户名为xu,邮箱为123455@qq.com
- git config --global user.name xu
- git config --global user.email 123455@qq.com 可以在用户目录下找到.gitconfig并查看内容
或者使用命令 cat ~/.gitconfig查看
说明: 签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。Git 首次安装必须设置一下用户签名,否则无法提交代码。※注意:这里设置用户签名和将来登录GitHub(或其他代码托管中心)的账号没有任何关系。
1.2初始化本地库
进入到本地仓库目录下执行
git init
1.3查看本地库状态
git status
告诉我们目前没有修改文件。
我手动创建一个文件a.txt,再次执行git status
这个时候提示,有个文件a.txt文件需要添加到暂存区
1.4将文件添加到暂存区
将a.txt文件添加到暂存区:
git add a.txt
可以看到 文件a.txt的颜色由红色变为绿色,表示已经成功添加到暂存区。
还可以看到提示我们如果想取消添加到暂存区可以使用git rm --cached 文件名
又看到 文件a.txt的颜色由绿色变为红色,表示已经成功取消添加到暂存区。
1.4.2将所有文件添加到暂存区
如果遇到需要一次添加很多文件到暂存区,可以使用 git add .,会将所有修改或新增的文件添加到暂存区
1.5将文件提交到本地库
git commit -m '日志信息' 文件名
1.6查看日志
1.6.1查看简要日志
git reflog
30dbb5e (HEAD -> master) HEAD@{0}: commit (initial): 新增a.txt文件
30dbb5e:表示版本(完整版版本号的前七位) 新增a.txt文件: 日志内容
1.6.2查看详细日志
git log
commit 30dbb5eecc8b5d3849882607d169e6f9dd42d907 (HEAD -> master)
Author: xuzili <7343242141@qq.com>
Date: Fri May 31 22:03:59 2024 +0800
新增a.txt文件
30dbb5eecc8b5d3849882607d169e6f9dd42d907:完整的版本号
Author:作者信息
1.7版本穿梭
1.7.1修改文件并提交
修改文件a.txt,添加123456内容
再使用git status查看状态
提示文件有修改,接下来我们添加到暂存区并提交到本地库
1.7.2查看日志
git reflog
现在指向最新的版本d88227b
1.7.3 版本穿梭
切换到b9e9a27版本 git reset --hard b9e9a27
回退到b9e9a27版本后,查看a.txt的文件内容,发现已经没有了123456
2、分支操作
2.1 什么是分支?
在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。对于初学者而言,分支可以简单理解为副本,一个分支就是一个单独的副本。(分支底层其实也是指针的引用)
2.2分支的好处
- 同时并行推进多个功能开发,提高开发效率。
- 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。
2.3分支操作命令
| 命令 | 作用 |
|---|---|
| git branch 分支名 | 创建分支 |
| git branch -v | 查看分支 |
| git checkout 分支名 | 切换分支 |
| git merge 分支名 | 把指定的分支合并到当前分支上 |
2.3.1查看分支
git branch -v
星号指向的和名称绿色的表示为当前分支
当前只有一个master分支并且指向d88227b版本
2.3.2创建分支
创建hot-fix分支,
git branch hot-fix
2.3.3切换分支
切换到hot-fix分支,git checkout hot-fix
2.3.3在一个分支下修改,另一个分支下查看
先切换到hot-fix下,在文件a.txt中添加修复bug内容,然后提交到本地库,然后在切换到master分支,查看a.txt内容,发现没有修复bug,再切换为hot-fix发现有修复bug。
2.3.4正常合并分支
将hot-fix合并到master分支上,git merge hot-fix
2.3.5撤销
git revert 命令可以用来撤销之前的提交。如果你不想重新合并,而是想要保留历史记录中的合并提交,但是想要撤销这次合并带来的变化,可以使用 git revert。
先查看刚刚合并的版本号
撤销刚刚合并的版本b3f7158,
git revert b3f7158
查看日志,多了一个刚刚撤销操作的日志
然后查看内容master分支下,没有了修复分支合并,但是hot-fix分支下还有。
然后再次尝试合并
发现提示已经是最新的,说明只是撤销了合并分支带来的变化,没有完全撤销这次合并。
2.3.6冲突合并
(1)什么合并冲突?
当两个分支中对同一部分文件做了不同的更改,Git 不知道应该保留哪个版本,因此会标记出冲突的区域,需要用户手动解决。
(2)创建合并冲突
切换到hot-fix分支,修改a.txt文件内容
提交修改到hot-fix分支上
切换到master分支上,修改a.txt文件内容
提交修改到master分支上
现在开始执行
git merge hot-fix 合并hot-fix分支
提示自动合并a.txt文件失败,需要手动解决冲突然后提交
然后执行 vim add.txt 编辑a.txt文件
修改冲突后的内容为
$ cat a.txt
master bug
hot-fix bug
下一步添加到暂存区
然后在提交修改
注意:提交时不需要带上文件名,否则提示无法在合并过程中执行部分提交。提交后修改后可以发现,分支名称从master|MERGING变成了master,成功解决了合并冲突
3.团队合作
| 命令 | 作用 |
|---|---|
| git remote -v | 查看远程库 |
| git remote add remote-name url | 添加远程库 |
| git pull remote-name remote-branch | 拉取指定远程仓库和分支 |
| git push remote-name local-branch | 推送特定分支 |
| git clone url | 克隆项目到本地 |
3.1 Github
网址:github.com/
3.1.1创建一个项目仓库git-demo
3.1.2添加远程库
添加一个远程库仓库地址为git@github.com:xuzili2020/git-demo.git,叫叫git-demo的远程仓库
git remote add git-demo git@github.com:xuzili2020/git-demo.git
3.1.3提交代码
git push git-demo master
提示没有权限,无法推送。
使用ssh-keygen命令生成一个密钥。ssh-keygen 是一个用于生成 SSH 密钥对(公钥和私钥)的命令行工具。SSH 密钥对在 SSH(Secure Shell)协议中用于身份验证,允许你安全地连接到远程服务器,如 Git 仓库托管服务(例如 GitHub、GitLab 或 Bitbucket)。
使用 cat ~/.ssh/id_rsa.pub查看密钥内容
复制输出的密钥内容,打开github中的设置,然后点击SSH and GPG key中的New SSH key
测试现在是否有权限, ssh -T git@github.com
再次推送,提示成功
3.1.4拉取代码
(1)手动修改远程仓库中a.txt的内容
(2)执行git pull git-demo master,拉取代码
3.1.5克隆
git clone git@github.com:xuzili2020/git-demo.git
查看远程库
总结:clone操作,包含三步,第一是pull拉取代码,第二init初始化仓库,第三添加远程仓库。
4.IDEA集成Git
4.1配置Git忽略文件
问题1:为什么要忽略文件?
答:因为实际开发过程中,会存在一些与实际功能无关,不参与服务器上部署运行的文件(如.idea、target等)。把它们忽略掉,能够屏蔽IDE 工具之间的差异。
问题 2:怎么忽略?
1)创建忽略规则文件 xxxx.ignore(前缀名随便起,建议是 git.ignore)
这个文件的存放位置原则上在哪里都可以,为了便于让~.gitconfg 文件引用,建议也放在用
户家目录下
创建vim git.ignore文件,内容如下:
### IntelliJ IDEA ###
out/
!**/src/main/**/out/
!**/src/test/**/out/
*.iml
.idea
### Eclipse ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
bin/
!**/src/main/**/bin/
!**/src/test/**/bin/
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
### VS Code ###
.vscode/
### Mac OS ###
.DS_Store
2)在.gitconfg 文件中引用忽略配置文件(此文件在 Windows 的家目录中)
[core]
excludesfile=C:/Users/徐自力/git.ignore
注意:这里要使用“正斜线(/)”,不要使用“反斜线(\)”←