Git使用教程

1. Git简介

Git的功能不多做介绍。

2. 基本操作

2.1 分支管理

2.1.1 创建新分支

git branch <new_branch>

2.1.2 查看远程分支

git branch -a 

或者

git branch -r

加上-a参数可以查看本地和远程分支,远程分支会用红色标识出来;加上-r参数只显示远程分支。

2.1.3 创建并签入分支

从当前master分支上创建v1.0分支,命令如下:

git checkout -b v1.0 master

将本地v1.0分支push到远程

git push origin v1.0:v1.0

2.1.4 删除远程分支

在Git v1.7.0版本之后,可以使用这种语法删除远程分支:

git push origin --delete <branchName>

2.1.5 删除不存在对应远程分支的本地分支

假设这样一种情况:

  1. 我创建了本地分支b1并push到远程分支origin/b1;
  2. 其他人在本地使用fetch或pull创建了本地的b1分支;
  3. 我删除了origin/b1远程分支;
  4. 其他人再次执行fetch或者pull并不会删除他们的本地b1分支,运行git branch -a也不能看出这个branch被删除了,如何处理?

使用下面的命令查看b1的状态:

git remote show origin

结果如下所示:

* remote origin
Fetch URL: git@github.com:xxx/xxx.git
Push URL: git@github.com:xxx/xxx.git
HEAD branch: master
Remote branches:
master tracked
refs/remotes/origin/b1 stale (use ‘git remote prune’ to remove)
Local branch configured for ‘git pull’:
master merges with remote master
Local ref configured for ‘git push’:
master pushes to master (up to date)

这时候能够看到b1是stale的,使用命令:

git remote prune origin

可以将其从本地的版本库中删除。
更简单的方法是使用这个命令,它在fetch之后删除掉没有与远程分支对应的本地分支:

git fetch -p

2.1.6 重命名远程分支

在Git中重命名远程分支,其实就是先删除远程分支,然后重命名本地分支,再重新提交一个远程分支。
例如下面的例子中,我们需要把devel分支重命名为develop分支:

git branch -av

* devel 752bb84 Merge pull request #158 from Gwill/devel
master 53b27b8 Merge pull request #138 from tdlrobin/master
zrong 2ae98d8 modify CCFileUtils, export getFileData
remotes/origin/HEAD -> origin/master
remotes/origin/add_build_script d4a8c4f Merge branch ‘master’ into add_build_script
remotes/origin/devel 752bb84 Merge pull request #158 from Gwill/devel
remotes/origin/devel_qt51 62208f1 update .gitignore
remotes/origin/master 53b27b8 Merge pull request #138 from tdlrobin/master
remotes/origin/zrong 2ae98d8 modify CCFileUtils, export getFileData

删除远程分支devel:

git push --delete origin devel

重命名本地分支:

git branch -m devel develop

推送本地分支:

git push origin develop

2.1.7 合并分支

将分支v1.0合并到master,操作如下:

git checkout v1.0
git checkout master
git merge v1.0

在当前为master分支的情况下,执行merge命令即可。

2.2 标签管理

2.2.1 列出现有标签

git tag

这个列表是按照字母顺序给出的,其实排名先后跟重要程度没有直接联系。
当然,也可以按照特定表达式搜索某些标签。比如:

git tag -l v.1.2.*

2.2.2 获取远程标签

git fetch origin tag <tagName>

2.2.3 创建标签

在git中有两种最主要的标签:轻量级标签(lightweight)和带注释的标签(annotated)。轻量级标签跟分支一样,不会改变。它就是针对某个特定提交的指针。然后,带注释的标签是git仓库中的对象。它使一组校验和,包含标签名、email、日期、标签信息、GPG签名和验证。一般情况下,建议创建带注释的标签,这样就会保留这些信息,但是如果你只需要临时性标签或者某些原因你不想在标签中附带上面说的这些信息,lightweight标签更合适些。
在git中创建带注释的标签非常简单,运行如下命令即可:

git tag -a release_v1.0_20140930 -m "version v1.0"

可以使用git show命令查看相应标签的版本信息,并连同现实打标签时的提交对象。

git show release_v1.0_20140930

轻量级标签实际上就是存在一个文件中的提交校验和没有附加任何其他信息。创建轻量级标签的方法就是把上面“-a”,“-s”,“-m”和谐选项都去掉。

git tag v1.1

2.2.4 验证标签

使用命令:

git tag -v release_v1.0_20140930

就可以验证一个签名标签了。这个命令会用到GPG来验证签名。前提是:你必须在密钥环中存放着签名者的公钥。

2.2.5 将本地标签推送到远程

git push --tags

2.2.6 删除远程标签

git push origin --delete tag <tagName>

或者

git tag -d <tagName>
git push origin :refs/tags/<tagName>

2.2.7 查看远程标签列表

git ls-remote

2.3 文件管理

现实文件的每一行是在哪个版本最后修改:

git blame filename.c

显示某个文件的每个版本提交信息:提交日期,提交人员,版本号,提交备注(没有修改细节)

git whatchanged charge.lua

2.4 日志

显示某个版本的修改详情

git show 7aee80cd2afe3202143f379ec671917bc86f9771

或者

git log -p 7aee80cd2afe3202143f379ec671917bc86f9771 

显示每个版本都修改了哪些文件:

git log --pretty=oneline  

显示某个版本的某个文件修改情况

git log --pretty=oneline  charge.lua

或者

git show 5aa1be6674ecf6c36a579521708bf6e5efb6795f charge.lua

2.5 配置

用户的git配置文件为~/.gitconfig,常规配置信息如下:

# 设置user
git config --global user.name "robin"
git config --global user.email "robinhuang83@gmail.com"
# 打开配色
git config --global color.ui true
# 设置alias
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.br branch
# 列举所有配置
git config -l

MacOSX下我的配置信息如下:

[user]
    name = robin
    email = robinhuang83@gmail.com
[core]
    excludesfile = /Users/robin/.gitignore_global
[difftool "sourcetree"]
    cmd = opendiff \"$LOCAL\" \"$REMOTE\"
    path =
[mergetool "sourcetree"]
    cmd = /Applications/SourceTree.app/Contents/Resources/opendiff-w.sh \"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\"
    trustExitCode = true
[alias]
    lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s [%cn] %Cgreen(%cr)%Creset' --abbrev-commit --date=relative

2.6 创建仓库

mkdir myproject
cd myproject
git init
touch README.md
git add README.md
git commit -m "first commit"
git remote add origin https://git-source/myproject.git
git push -u origin master

2.7 导出干净代码

$git archive --format zip --output "./output.zip" master -0  

2.8 有用的命令

2.8.1 放弃本地修改强制更新

git fetch --all
git reset --hard origin/v1.0
git pull

git fetch只是下载远程的库的内容,不做任何的合并;git reset把HEAD指向刚刚下载的最新的版本。

2.8.2 本地分支强制覆盖master分支

git checkout master
git reset --hard origin/master
git reset --hard develop
git push origin master --force

3.统计

3.1 统计某人的代码提交量,包括增加,删除

git log --author="$(git config --get user.name)" --pretty=tformat: --numstat | gawk '{ add += $1 ; subs += $2 ; loc += $1 - $2 } END { printf "added lines: %s removed lines : %s total lines: %s\n",add,subs,loc }' -

3.2 统计代码提交量排行

git shortlog -s|sort -r

3.3 统计代码提交量排行前五

git shortlog -s|sort -r|head -n 5

或者

git log --pretty='%aN' | sort | uniq -c | sort -k1 -n -r | head -n 5

3.4 贡献者统计

git log --pretty='%aN' | sort -u | wc -l

3.5 提交数统计

git log --oneline | wc -l
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
Git是目前最流行的版本控制系统之一,可以帮助开发者管理代码和协作开发。以下是Git使用教程: 1. 安装Git 首先,你需要在你的电脑上安装Git。你可以从Git官网下载Git安装包,然后按照安装向导进行安装。 2. 配置Git 安装完成后,你需要配置Git。在终端中输入以下命令: ``` $ git config --global user.name "Your Name" $ git config --global user.email "youremail@example.com" ``` 这里的“Your Name”和“youremail@example.com”分别是你的名字和邮箱地址。 3. 创建本地仓库 在你的本地电脑上创建一个仓库。在终端中进入你的项目文件夹,然后输入以下命令: ``` $ git init ``` 这会在当前文件夹中创建一个Git仓库。 4. 将文件添加到暂存区 在你的项目中添加或修改文件后,你需要将这些文件添加到Git的暂存区中。在终端中输入以下命令: ``` $ git add . ``` 这会将所有修改过的文件添加到暂存区中。 5. 提交更改 当你的修改已经添加到了暂存区,你需要将这些更改提交到Git仓库中。在终端中输入以下命令: ``` $ git commit -m "commit message" ``` 这里的“commit message”是你的提交信息,用于描述你所做的更改。 6. 推送到远程仓库 如果你想与其他人协作开发,你需要将你的更改推送到远程仓库中。在终端中输入以下命令: ``` $ git push origin master ``` 这里的“origin”是远程仓库的名称,“master”是你要推送的分支名。 以上就是Git的基本使用教程。当然,Git还有很多高级的用法,你可以参考Git官方文档进行学习。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值