Git的用法
为什么要使用GIT?
Git是一种分布式版本控制系统,用于跟踪和管理计算机程序代码的变化。它由Linus Torvalds于2005年创建,最初用于管理Linux内核开发,目前已被广泛应用于各种软件项目和团队协作中。
Git的一些重要概念和功能有:
- 版本控制: Git允许开发人员跟踪代码的历史变化,从而可以轻松地查看以前的版本、比较更改以及回退到旧版本。
- 分布式系统: Git不仅仅是一个中心服务器上的版本控制系统,每个开发人员的本地计算机都包含完整的代码库和历史记录。这使得开发人员可以在没有网络连接的情况下工作,以及更容易处理分支和合并操作。
- 代码仓库: 代码仓库是存储项目代码和历史记录的地方。每个开发人员可以在自己的本地计算机上拥有一个完整的代码仓库,并可以从远程仓库克隆、推送和拉取更改。
- 提交(Commit): 提交是指将一组文件更改添加到代码仓库的过程。每个提交都有一个描述性的消息,用于解释为什么进行了这些更改。
- 分支(Branch): 分支是独立的开发路径,允许开发人员在不影响主要代码线的情况下开展工作。分支可以用于开发新功能、修复错误等。
- 合并(Merge): 合并是将一个分支的更改合并到另一个分支的过程。这使得团队可以将不同开发路径的工作合并到一起。
- 远程仓库: 远程仓库是存储在互联网上的代码仓库,通常用于团队协作。常见的远程仓库托管服务包括GitHub、GitLab和Bitbucket。
- 拉取(Pull)和推送(Push): 拉取是从远程仓库获取最新更改的过程,而推送是将本地更改上传到远程仓库的过程。
- 标签(Tag): 标签是代码仓库中特定版本的命名指针,通常用于标识发布版本。
Git在开发过程中的优势包括:
- 分布式特性: 每个开发人员都可以在本地工作,不受网络连接的限制。
- 分支管理: 可以并行开发不同功能,然后将更改合并在一起,从而减少冲突。
- 版本历史: 可以轻松地查看代码的演变历史,比较不同版本之间的更改。
- 协作与合并: 多人团队可以同时工作,然后将各自的更改合并到共同的代码库中。
0x00
-
创建github ssh key
在github中右上角→我→设置→Connect with SSH→Generate new SSH Key打开以下界面
-
在terminal 中创建一对密钥
$ ssh-keygen -t ed25519 -C "your_email@example.com"
此处"your_email@example.com"为你的GitHub邮箱,使用的算法为Ed25519 算法
此时将生成一对密钥
Generating public/private ALGORITHM key pair.后提示选择密钥保存的位置时,按下return键则将密钥保存到默认位置
按照系统提示,为密钥设置密码即可完成设置
执行以下指令,将公钥复制到上图key中,完成后点击Add SSH key即可
$pbcopy < ~/.ssh/id_ed25519.pub
0x01
使用git提交文件
在多人开发合作过程中,一般会将主仓库fork到自己的帐户下,再clone到本地进行开发,在完成某个功能后,再将自己的文件提交到自己帐户下的仓库,在GitHub中创建一个PR,写清楚修改的内容或完成的部分,提交PR。说提交的PR将由主仓库的管理员合入分支。
在本地完成开发后,将文件提交到自己的仓库里往往经过了以下三个步骤,即add文件 commit暂存 push到远程仓库。
git add
git commit -s -m "description"
git push origin
以下为git常用的一些命令
初始化一个新的仓库:
git init
这将在当前目录下创建一个新的Git仓库。
- 克隆远程仓库:
git clone <远程仓库URL>
这将从远程仓库克隆代码到本地。
- 添加文件到暂存区:
git add <文件名>
这将将指定的文件添加到暂存区,以便在下一次提交时包含这些更改。
提交更改:
git commit -m "提交消息"
这将提交暂存区的更改到本地仓库,并附带一条描述性的提交消息。
查看提交历史:
git log
这将显示提交历史,包括每次提交的作者、时间和提交消息。
创建分支:
git branch <分支名>
这将创建一个新的分支,您可以在新分支上开展工作。
切换分支:
git checkout <分支名>
这将切换到指定的分支。
合并分支:
git merge <要合并的分支名>
这将将指定分支的更改合并到当前分支。
拉取远程更改:
git pull origin <分支名>
这将从远程仓库拉取最新更改并合并到当前分支。
推送更改到远程仓库:
git push origin <分支名>
这将将本地分支的更改推送到远程仓库。
创建标签:
git tag -a <标签名> -m "标签说明" <提交哈希值>
这将在指定的提交上创建一个标签,用于标识特定版本。
查看当前状态:
git status
这将显示当前工作目录的状态,包括未暂存和已暂存的更改。
这只是Git中一些基本的操作和命令示例。Git具有更多功能和选项,您可以通过查阅Git文档或教程深入了解。在使用Git时,建议先在单个文件中尝试这些命令,然后逐步扩展到更大的项目。
0x02
解决冲突
由于git是一个分布式系统,在多人编辑同一个文件到情况下可能发生冲突,以下为解决冲突的几种方式。
-
拉取远程更改或合并分支: 首先,确保的本地仓库是最新的,可以使用以下命令拉取远程更改或合并分支:
git pull origin <分支名> -
发现冲突: 如果在拉取或合并过程中发生冲突,Git会将冲突标记为以下样式的注释:
<<<<<<< HEAD 本地分支的修改 ======= 远程分支的修改 >>>>>>> 提交哈希值 -
手动解决冲突: 打开包含冲突的文件,将看到冲突的部分在上述样式的注释之间。此时需要手动编辑此文件以决定保留哪些更改或如何合并这些更改。例如,可以将冲突的部分修改成您希望的最终状态,删除冲突标记,然后保存文件。
-
暂存解决后的文件: 在解决冲突后,使用以下命令将解决后的文件标记为已解决:
git add <冲突文件名> -
完成合并或提交: 一旦所有冲突都已解决并且文件已暂存,您可以完成合并或提交:
git commit -m "解决冲突" -
推送更改(如果是合并分支的情况): 如果您是在合并分支时解决冲突,解决冲突后,您可能需要将更改推送到远程仓库: