Git 系列之Git 实践

今天来一篇 git 的在实际开发过程中的操作。

拷贝

  • 先到自己想要放项目的目录之下

image

  • 然后拷贝项目,后面的 url 放置自己的项目地址
    当然,可能会进行密码输入之类的问题 比如 GitHub 不再支持密码验证解决方案:SSH 免密与 Token 登录配置
    这时候的链接,可能是需要 SSH 命令的 git@github.com:hzzzzzzzq/git-application-docs.git
1
2
3
4
5
6
git clone https://github.com/hzzzzzzzq/git-application-docs.git
# 或者
git clone git@github.com:hzzzzzzzq/git-application-docs.git

# 拷贝之后我们 cd 到目录文件
cd git-application-docs

image

现在,就是我们 clone 下来的项目。

提交和推送

  • 先添加想要加入的文件夹
    我们这里加入 git 文件夹,以及 branchTry.md 用于分支合并,和 gitTry.md 用于 git 提交等。
    image

  • 将添加的文件加入暂存区

1
2
3
4
5
6
7
8
# 单个文件添加
git add git/gitTry.md

# 全部一起添加
git add .

# 如果该文件被忽略,则需要添加 -f 强制添加
git add -f git/branchTry.md
  • 然后使用 git commit 提交
    git commit 是将文件提交到本地仓库,用来记录本次修改的内容
1
git commit -m "feat: 添加文件"

image

其中包含了修改的文件内容。

补充:提交信息的规范

feat: 新功能
fix: 修补 bug
docs: 文档修改
style: 格式修改
refactor: 重构
merge: 合并

  • 提交本地仓库代码到远端仓库
1
git push

image

git push 提交远端仓库的结果。

分支管理

  • 创建一个新分支,并切换入该分支
    feat-branch 是分支名,这里基本是按照功能来命名。
1
git checkout -b feat-branch
  • 切换分支
1
2
3
# main 就是你要切换的分支名
# 切回主分支
git checkout main
  • 删除分支
1
2
3
# feat-branch 就是想要删除的分支名称
# 因为该分支还需要使用,就不做操作了。
git branch -d feat-branch
  • 将分支提交到远端分支
1
git push git@github.com:hzzzzzzzq/git-application-docs.git feat-branch

image

这时候,在远端仓库中,就可以看到该分支了。

image

拉取

一个项目经常是多个人一起进行开发的,当别人提交代码时,我们就需要拉取他人的代码了。这时候 git pull 的作用就来了。

1
git pull

为了演示 git pull,我在这边新建一个 git 本地仓库,用来演示共同开发时的拉取以及冲突。

clone 一个新项目,我们然后对文件进行部分修改,然后进行提交。

image

image

接下来,我们重新切回到我们之前的文件,然后进行 git pull

1
2
3
4
5
6
7
8
# 切换原项目
cd ../git-application-docs

# 切到 main 分支
git checkout main

# 拉取远端代码
git pull

image

合并与冲突

main 分支下,修改标题内容。

image

然后提交。

image

切换到 feat-branch,并修改同文件的标题,并提交。

1
2
3
4
5
6
7
8
# 切分支
git checkout feat-branch
# 添加到暂存区
git add .
# 提交
git commit -m "feat: change branch title"
# 推送到远端
git push

image

  • 合并

我们切回 main 分支,然后将 feat-branch 合并到 main 分支。

1
2
3
4
5
6
# 切分支
git checkout main
# 合并
git merge feat-branch
# 没有冲突的情况,直接推送即可
git push

如果合并没有问题,就可以直接进行 push 操作。
但是,由于我们在两个分支,同时对同一个文件的同一个地方进行了修改,于是,就产生了以下问题,merge 失败,有冲突。

image

  • 冲突

我们需要打开文件夹,我们发现一些奇奇怪怪的符号,这些就是冲突的标识,我们需要对冲突进行处理。
将文件进行修改,调整到你希望的样子。并对全局进行检查是否,还有其他冲突文件。

我们看到有 <<<<<< 以及 ====== 因为在 .md 文件中,我打开了源形式,否则可能看不到 ===== 或者 < 被转化。

image

现在我演示一下,我想保留 feat-branch 的内容,则删除 main 分支的内容。
main 分支内容删除之后的样子。
image

  • 提交推送
1
2
3
4
5
6
# 添加冲突文件到暂存区
git add .
# 提交到本地
git commit -m "merge: 合并冲突"
# 推送到远端
git push

image

这时,我们在远端仓库 main 分支下,看到的就是我们 feat-branch 分支中的内容了。

提交记录

  • git log 查看提交记录
1
git log

image

  • 只看某个人的提交记录
    这里结果是一样的,因为都是我自己完成的。
1
git log --author=hzzzzzzzq
-------------------- 本文结束 感谢阅读 --------------------