Git简介

当涉及到软件开发或协作时,版本管理是一个不可或缺的概念。无论你是一个独立开发者还是一个团队成员,都会遇到需要跟踪和管理代码变更的情况。这时候,Git作为一个强大而流行的版本控制系统就发挥着重要的作用。

Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 也是Linus Torvalds为了帮助社区管理Linux内核而开发的一个开放源码的版本控制软件。2005年7月份,Linus花了两周时间自己用C写了第一个版本分布式版本控制系统。

Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKeeper

Git是目前世界上最先进的(没有之一)分布式版本控制系统

版本控制系统-Git - 图1
Add:这里的Add不只是新增文件,包含所有对文件的操作(新增、修改、删除)。同样,Commit也是如此。
Push:将所有的Commit推送给服务器
Pull:将服务器新的Commit(可能是别人提交的,或者自己另一台设备提交的)拉取下来

下载及安装

git官方下载地址:https://git-scm.com/downloads,下载64位安装版。
image.png
如果下载速度慢,建议将下载链接复制到迅雷进行下载。

命令行操作

全局设置

配置(config)用户名和邮箱(git仓库网站上的注册邮箱)

  1. git config --global user.name "poplartang"
  2. git config --global user.email "poplar_tang@163.com"

查看现有配置

  1. git config --list

初始化仓库

创建新的本地仓库,首先创建一个目录git_test,然后在控制台进入该目录,执行初始化(init

  1. git init # 在指定目录初始化git本地仓库

可以通过如下命令查看仓库当前状态

  1. git status

提交代码

目录git_test中创建一个文件README.md,提交(commit)该文件

  1. git add README.md # 或 git add .
  2. git commit -m "第一次提交" # -m 后的提交日志必须要写

此时,我们的代码就拥有了历史记录,可以在本地随时回退到历史的版本。不要任何互联网操作。
可以使用git add .将未被版本管理的文件纳入到版本管理系统。

查看提交历史

  1. git log

推送代码

如果需要永久保存代码,或者想用其他电脑获取代码,或分享给同事进行共同开发,才需要联网,把代码推送到一个公共网络的代码仓库里。

将本地仓库与远程仓库git_test_first关联起来,随后推送(push)过去

  1. git remote add origin https://gitee.com/tangyang/git_test_01.git
  2. git push -u origin "master"

此时,我们的代码在远程服务器(名字叫origin)也有一个永久的备份了

本地可以添加多个远程仓库,如果只有一个,名字建议使用origin 可以通过git remote -v查看有哪些远程仓库链接

拉取合并代码

如果远程仓库的代码被别人修改并推送了,或者自己在其他电脑上修改推送了,则可以把那些修改拉(pull)下来,并与本地的代码进行合并。

  1. git pull

克隆仓库

我们可以去开源平台上clone别人的代码,同样的,如果你的代码仓库是公开的,则别人可以下载到你的代码。

  1. git clone https://gitee.com/tangyang/git_test_01.git

clone的地址使用HTTPS协议的:
image.png

配置忽略文件

有一些临时文件不需要被提交,例如windows下的.swp,苹果下的.DS_Store。则可以通过在根目录的.gitignore文件中添加描述,对这些文件进行忽略

  1. # 忽略所有.swp结尾的文件
  2. *.swp
  3. # 忽略指定文件
  4. 打包.zip
  5. # 忽略目录
  6. .idea/

凭据管理

向git管理网站push代码时,首次需要输入账号和密码,后边会自动保存,如果需要查看、修改、删除。可打开Windows凭据管理。

  1. 点开始按钮(按下Windows键),搜索“凭据管理器”

image.png

  1. 点击Windows凭据,可对普通凭据里之前输入的用户名密码进行编辑和删除操作

image.png

GUI工具操作

可以通过安装GUI客户端,替代大量的命令行操作,Git官方也推荐了很多GUI工具:Git - GUI Clients
我们这里推荐使用TortoiseGit(小乌龟):TortoiseGit – Windows Shell Interface to Git 支持中文

  • 请下载64-bit Windows最新版客户端
  • 请下载对应的 Chinese, simplified 简体中文汉化包

image.png

全局设置

image.png

初始化仓库

image.png
直接点确定
image.png

提交代码

在仓库中按住Shift按鼠标右键
image.png
image.png
输入提交日志并提交
image.png

推送代码

image.png
image.png

拉取合并代码

克隆仓库

将已有代码git管理起来

编辑器的Git操作

VSCode安装GitLens插件,可进行Git历史管理

拉取合并代码

提交代码

推送代码

冲突及解决

冲突的产生

修改相同文件的相同行内容会产生冲突,如果远程有新的提交,其内容和本地修改的在同一文件同一行,则本地在git pull (git fetch + git merge)时,会产生冲突。需要先根据需要解决冲突,确保编译运行无误,再进行提交推送。

冲突的解决

建议使用手动方式,也可使用编辑器的冲突处理工具。自己决定保留本地还是远程的代码(或者都保留),随后进行提交推送。

Git分支

  1. # 查看所有分支
  2. git branch -a
  3. # 从当前分支(master)创建一个新分支
  4. git checkout -b dev
  5. # 切换不同的分支
  6. git checkout dev
  7. # 把dev开发好的功能合并到当前分支(先切换到master)
  8. git merge dev
  9. # 删除分支
  10. git branch -d dev

Git学习链接

小姐姐用动画图解 Git 命令,这也太秀了吧?!
寓教于乐,用玩游戏的方式学习 Git!
收好这份 Git 命令应急手册,关键时刻可保你一命
Learn Git Branching

异常问题处理

git push失败

错误截图1:
image.png
说明远程仓库已经初始化过了(新建仓库时,勾选了初始化README.md等文件),需要先git pull才能推送。此时由于本地也初始化过,所以建议在一个空的目录把远程仓库clone下来,然后把项目代码拷贝进去再提交推送。
或者使用TortoiseGit进行pull操作,然后点击【合并非相关历史】:
image.png
错误截图2:
image.png
注册账户时不能勾选隐藏email,否则无法推送代码。