Git简介
当涉及到软件开发或协作时,版本管理是一个不可或缺的概念。无论你是一个独立开发者还是一个团队成员,都会遇到需要跟踪和管理代码变更的情况。这时候,Git作为一个强大而流行的版本控制系统就发挥着重要的作用。
Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 也是Linus Torvalds为了帮助社区管理Linux内核而开发的一个开放源码的版本控制软件。2005年7月份,Linus花了两周时间自己用C写了第一个版本分布式版本控制系统。
Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKeeper
Git是目前世界上最先进的(没有之一)分布式版本控制系统
Add
:这里的Add不只是新增文件,包含所有对文件的操作(新增、修改、删除)。同样,Commit也是如此。Push
:将所有的Commit
推送给服务器Pull
:将服务器新的Commit
(可能是别人提交的,或者自己另一台设备提交的)拉取下来
下载及安装
git官方下载地址:https://git-scm.com/downloads,下载64位安装版。
如果下载速度慢,建议将下载链接复制到迅雷进行下载。
命令行操作
全局设置
配置(config
)用户名和邮箱(git仓库网站上的注册邮箱)
git config --global user.name "poplartang"
git config --global user.email "poplar_tang@163.com"
查看现有配置
git config --list
初始化仓库
创建新的本地仓库,首先创建一个目录git_test
,然后在控制台进入该目录,执行初始化(init
)
git init # 在指定目录初始化git本地仓库
可以通过如下命令查看仓库当前状态
git status
提交代码
目录git_test
中创建一个文件README.md
,提交(commit
)该文件
git add README.md # 或 git add .
git commit -m "第一次提交" # -m 后的提交日志必须要写
此时,我们的代码就拥有了历史记录,可以在本地随时回退到历史的版本。不要任何互联网操作。
可以使用git add .
将未被版本管理的文件纳入到版本管理系统。
查看提交历史
git log
推送代码
如果需要永久保存代码,或者想用其他电脑获取代码,或分享给同事进行共同开发,才需要联网,把代码推送到一个公共网络的代码仓库里。
将本地仓库与远程仓库git_test_first
关联起来,随后推送(push
)过去
git remote add origin https://gitee.com/tangyang/git_test_01.git
git push -u origin "master"
此时,我们的代码在远程服务器(名字叫origin)也有一个永久的备份了
本地可以添加多个远程仓库,如果只有一个,名字建议使用
origin
可以通过git remote -v
查看有哪些远程仓库链接
拉取合并代码
如果远程仓库的代码被别人修改并推送了,或者自己在其他电脑上修改推送了,则可以把那些修改拉(pull
)下来,并与本地的代码进行合并。
git pull
克隆仓库
我们可以去开源平台上clone别人的代码,同样的,如果你的代码仓库是公开的,则别人可以下载到你的代码。
git clone https://gitee.com/tangyang/git_test_01.git
clone
的地址使用HTTPS协议的:
配置忽略文件
有一些临时文件不需要被提交,例如windows下的.swp
,苹果下的.DS_Store
。则可以通过在根目录的.gitignore
文件中添加描述,对这些文件进行忽略
# 忽略所有.swp结尾的文件
*.swp
# 忽略指定文件
打包.zip
# 忽略目录
.idea/
凭据管理
向git管理网站push代码时,首次需要输入账号和密码,后边会自动保存,如果需要查看、修改、删除。可打开Windows凭据管理。
- 点开始按钮(按下Windows键),搜索“凭据管理器”
- 点击Windows凭据,可对普通凭据里之前输入的用户名密码进行编辑和删除操作
GUI工具操作
可以通过安装GUI客户端,替代大量的命令行操作,Git官方也推荐了很多GUI工具:Git - GUI Clients
我们这里推荐使用TortoiseGit
(小乌龟):TortoiseGit – Windows Shell Interface to Git 支持中文
- 请下载
64-bit Windows
最新版客户端 - 请下载对应的
Chinese, simplified
简体中文汉化包
全局设置
初始化仓库
提交代码
推送代码
拉取合并代码
克隆仓库
将已有代码git管理起来
编辑器的Git操作
拉取合并代码
提交代码
推送代码
冲突及解决
冲突的产生
修改相同文件的相同行内容会产生冲突,如果远程有新的提交,其内容和本地修改的在同一文件同一行,则本地在git pull
(git fetch + git merge)时,会产生冲突。需要先根据需要解决冲突,确保编译运行无误,再进行提交推送。
冲突的解决
建议使用手动方式,也可使用编辑器的冲突处理工具。自己决定保留本地还是远程的代码(或者都保留),随后进行提交推送。
Git分支
# 查看所有分支
git branch -a
# 从当前分支(master)创建一个新分支
git checkout -b dev
# 切换不同的分支
git checkout dev
# 把dev开发好的功能合并到当前分支(先切换到master)
git merge dev
# 删除分支
git branch -d dev
Git学习链接
小姐姐用动画图解 Git 命令,这也太秀了吧?!
寓教于乐,用玩游戏的方式学习 Git!
收好这份 Git 命令应急手册,关键时刻可保你一命
Learn Git Branching
异常问题处理
git push失败
错误截图1:
说明远程仓库已经初始化过了(新建仓库时,勾选了初始化README.md等文件),需要先git pull
才能推送。此时由于本地也初始化过,所以建议在一个空的目录把远程仓库clone
下来,然后把项目代码拷贝进去再提交推送。
或者使用TortoiseGit进行pull操作,然后点击【合并非相关历史】:
错误截图2:
注册账户时不能勾选隐藏email,否则无法推送代码。