Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >看完这篇还不会用Git,那我就哭了!

看完这篇还不会用Git,那我就哭了!

作者头像
武培轩
发布于 2019-11-29 02:06:54
发布于 2019-11-29 02:06:54
81100
代码可运行
举报
文章被收录于专栏:武培轩的专栏武培轩的专栏
运行总次数:0
代码可运行

你使用过 Git 吗?也许你已经使用了一段时间,但它的许多奥秘仍然令人困惑。

Git 是一个版本控制系统,是任何软件开发项目中的主要内容。通常有两个主要用途:代码备份和代码版本控制。你可以逐步处理代码,在需要回滚到备份副本的过程中保存每一步的进度!

常见的问题是 Git 很难使用。有时版本和分支不同步,你会花很长时间试图推送代码!更糟糕的是,不知道某些命令的确切工作方式很容易导致意外删除或覆盖部分代码!

这就是我写本文的原因,从而学习到如何正确使用 Git,以便在开发中共同进行编码!

安装和配置

Git 安装

首先,我们必须安装 Git 才能使用它!这里分 LinuxWindows 来演示:

在 Linux 上安装 Git

我们可以使用 yum 轻松快速地做到这一点:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo yum install git

在 Windows 上安装 Git

直接在 https://git-scm.com/downloads 里面,下载最新版的 Git,默认安装就可以了。

安装完成后,在开始菜单里找到 Git->Git Bash,点击后出现一个类似命令行窗口的东西,就说明 Git 安装成功。

Git 配置

可以保存 Git 用户名和电子邮件,这样就不必在以后的 Git 命令中再次输入它们。

在命令行中配置本地仓库的账号和邮箱:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ git config --global user.name "wupx"  
$ git config --global user.email "wupx@qq.com"  

好多人都不知道的小技巧是,你可以为 Git 启用一些额外的颜色,这样就可以更容易地阅读命令的输出!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git config --global color.ui true

Git 基本版本控制

初始化 Git

现在,我们可以开始对项目进行版本控制。使用 cd 命令导航到要在终端中设置版本控制的目录,现在你可以像这样初始化 Git 存储库:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git init

这将创建一个名为 .git 的新子目录(Windows 下该目录为隐藏的),其中包含所有必需的存储库文件(Git 存储库框架)。至此,你的项目中尚未跟踪任何内容。

添加并提交

要开始对现有文件进行版本控制,你应该先跟踪这些文件并进行初始提交。要做到这一点,你首先需要将文件添加到 Git 中,并将它们附加到 Git 项目中。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git add <file>
git commit -m 'first commit'

远程备份

很棒!你现在已经开始在本地对项目进行版本控制。如果你想远程保存和备份项目,则需要在 GitHub 上创建一个远程存储库(它是免费的!)。因此,首先转到 github.com 并创建一个存储库。然后,使用存储库的链接将其添加为本地 git 项目的来源,即该代码的存储位置。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 示例
git remote add origin \
https://github.com/wupeixuan/repo.git 
# 以我的一个仓库为例
git remote add origin \
https://github.com/wupeixuan/JDKSourceCode1.8.git

然后,你可以继续将代码推送到 GitHub!哇,你已经成功备份了你的代码!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git push origin master

处理文件

状态检查

git status 命令用于确定哪些文件处于哪种状态,它使你可以查看哪些文件已提交,哪些文件尚未提交。如果在所有文件都已提交并推送后运行此命令,则应该看到类似以下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ git status
# On branch master
nothing to commit (working directory clean)

如果你将新文件添加到项目中,而该文件之前不存在,则在运行 git status 时,你应该看到未跟踪的文件,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   README
nothing added to commit but untracked files present (use "git add" to track)

使用 git status 对于快速检查你已经备份的内容和你仅在本地拥有的内容非常有用。

高级文件添加

还有一些更高级的方法可以将文件添加到 Git 中,从而使你的工作流程更高效。我们可以执行以下操作,而不是试图查找所有有更改的文件并逐个添加它们:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 逐个添加文件
git add filename

# 添加当前目录中的所有文件
git add -A

# 添加当前目录中的所有文件更改
git add .

# 选择要添加的更改(你可以 YN 完成所有更改)
git add -p

高级提交

我们可以使用 git commit -m '提交信息' 来将文件提交到 Git。对于提交简短消息来说,这一切都很好,但是如果你想做一些更精细的事情,你需要来学习更多的操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
### 提交暂存文件,通常用于较短的提交消息
git commit -m 'commit message'

### 添加文件并提交一次
git commit filename -m 'commit message'

### 添加文件并提交暂存文件
git commit -am 'insert commit message'

### 更改你的最新提交消息
git commit --amend 'new commit message' 

# 将一系列提交合并为一个提交,你可能会用它来组织混乱的提交历史记录
git rebase -i
### 这将为你提供核心编辑器上的界面:
# Commands:
#  p, pick = use commit
#  r, reword = use commit, but edit the commit message
#  e, edit = use commit, but stop for amending
#  s, squash = use commit, but meld into previous commit
#  f, fixup = like "squash", but discard this commit's log message
#  x, exec = run command (the rest of the line) using shell

分支与合并

GitHub存储库的master分支应始终包含有效且稳定的代码。但是,你可能还希望备份一些当前正在处理的代码,但这些代码并不完全稳定。也许你要添加一个新功能,你正在尝试和破坏很多代码,但是你仍然希望保留备份以保存进度!

分支使你可以在不影响master分支的情况下处理代码的单独副本。首次创建分支时,将以新名称创建master分支的完整克隆。然后,你可以独立地在此新分支中修改代码,包括提交文件等。一旦你的新功能已完全集成并且代码稳定,就可以将其合并到master分支中!

分支

这是你在分支上创建和工作所需的所有东西:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
### 创建一个本地分支
git checkout -b branchname

### 在2个分支之间切换
git checkout prc/dev-wupx
git checkout master

### 将新的本地分支作为备份
git push -u origin branch_2

### 删除本地分支,这不会让你删除尚未合并的分支
git branch -d branch_2

### 删除本地分支,即使尚未合并,这也会删除该分支!
git branch -D branch_2

### Viewing all current branches for the repository, including both ### local and remote branches. Great to see if you already have a ### branch for a particular feature addition, especially on bigger ### projects
### 查看存储库的所有当前分支,包括本地和远程分支。
git branch -a

### 查看已合并到您当前分支中的所有分支,包括本地和远程。 非常适合查看所有代码的来源!
git branch -a --merged

### 查看尚未合并到当前分支中的所有分支,包括本地和远程
git branch -a --no-merged

### 查看所有本地分支
git branch

### 查看所有远程分支
git branch -r

# 将主分支重新设置为本地分支
$ git rebase origin/master

# 将分支推送到远程存储库源并对其进行跟踪
$ git push origin branchname

合并

很棒!现在,你已经学习了如何创建分支并开始敲代码!将新功能添加到分支中之后,你需要将其合并回master分支,以便您的master具有所有最新的代码功能。

方法如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
### 首先确保你正在查看 master 分支
git checkout master

### 现在将你的分支合并到 master 
git merge prc/dev-wupx

你可能必须修复分支与主服务器之间的任何代码冲突,但是 Git 将向你展示在键入该 merge 命令后如何执行所有这些操作。

修复错误和回溯

发生错误......它们经常在编码中发生!重要的是我们能够修复它们。

不要慌!Git 提供了你所需的一切,以防你在所推送的代码中犯错,改写某些内容或者只是想对所推送的内容进行更正。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
### 切换到最新提交的代码版本
git reset HEAD 
git reset HEAD -- filename # for a specific file
### 切换到最新提交之前的代码版本
git reset HEAD^ -- filename
git reset HEAD^ -- filename # for a specific file
### 切换回35次提交
git reset HEAD~3 -- filename
git reset HEAD~3 -- filename # for a specific file
git reset HEAD~5 -- filename
git reset HEAD~5 -- filename # for a specific file
### 切换回特定的提交,其中 0766c053 为提交 ID
git reset 0766c053 -- filename
git reset 0766c053 -- filename # for a specific file
### 先前的命令是所谓的软重置。 你的代码已重置,但是git仍会保留其他代码的副本,以备你需要时使用。 另一方面,--hard 标志告诉Git覆盖工作目录中的所有更改。
git reset --hard 0766c053

对 Git 有用的提示和技巧

我们已经完成了所有细节部分!以下是一些 Git 提示和技巧,你可能会发现它们对改善工作流程非常有用!

搜索

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
### 搜索目录中的字符串部分
git grep 'project'

### 在目录中搜索部分字符串,-n 打印出 git 找到匹配项的行号
git grep -n 'project'

### git grep -C <行数> 'something' 搜索带有某些上下文的字符串部分(某些行在我们正在寻找的字符串之前和之后)
git grep -C<number of lines> 'project'

### 搜索字符串的一部分,并在字符串之前显示行
git grep -B<number of lines> 'project'

### 搜索字符串的一部分,并在字符串之后显示行
git grep -A<number of lines> 'something'

看谁写了什么

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
### 显示带有作者姓名的文件的更改历史记录
git blame 'filename'

### 显示带有作者姓名和 git commit ID 的文件的更改历史记录
git blame 'filename' -l

日志

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
### 显示存储库中所有提交的列表 该命令显示有关提交的所有信息,例如提交ID,作者,日期和提交消息
git log

### 提交列表仅显示提交消息和更改
git log -p

### 包含您要查找的特定字符串的提交列表
git log -S 'project'

### 作者提交的清单
git log --author 'wupx'

### 显示存储库中提交列表的摘要。显示提交ID和提交消息的较短版本。
git log --oneline

### 显示昨天以来仓库中的提交列表
git log --since=yesterday

### 显示作者日志,并在提交消息中搜索特定术语
git log --grep "project" --author "wupx"
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-11-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
2021-1-7-一文掌握git/github使用,内容详细,适合小白~
本文先结合版本控制系统对git进行了简要介绍,再详细讲述了github注册使用教程和git安装使用教程,希望对和楼主一样的小白有所帮助。
用户7719114
2022/02/22
6380
2021-1-7-一文掌握git/github使用,内容详细,适合小白~
Git 从入门到精通,这篇包教包会!
集中化的版本控制系统,诸如 CVS,Subversion 等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。
java思维导图
2020/03/03
2.9K0
看完此文你不会Git,请来找我!
 数据是短暂的,且容易丢失。特别是作为开发人员的我们,需要频繁的对项目代码进行更新,容易产生错误的变更或者是项目文件的丢失。因此,我们需要在整个工作的过程中不断的备份和存档我们的项目文件。  在当下的项目开发环境下,一个项目往往是有多个开发者共同开发维护的,那么意味着他们需要操作同一项目文件,我们需要对文本和项目代码的变更进行记录管理,这些变更就构成了一个版本库,对版本库的管理就是版本控制。  一个可以管理或追踪软件代码的工具通常称为版本控制系统(VCS)。现在流行的版本控制工具很多,当然,我们接下来要说的就是称的上VCS界一哥的Git,它是一款功能强大、灵活且低开销的VCS,它可以让协同开发成为一种乐趣。
我就是马云飞
2019/03/08
9540
看完此文你不会Git,请来找我!
Git使用教程(看完会了也懂了)
默认打开的地址是应该是用户目录,也就是c盘Users下某个地方,下面就先在固定的地址新建一个空的目录作为我们的新项目,叫做FastApiProject:
MinChess
2023/08/13
1.8K0
Git使用教程(看完会了也懂了)
Git 备忘清单详解
Git 是一个免费并且开源的分布式版本控制系统,旨在快速高效地处理从小到大所有项目的版本管理。Git 是目前最流行的版本管理工具,目前绝大部分公司都是使用 Git 作为项目的版本管理工具。目前最火的开源社区 Github,就是基于 Git 版本控制系统,所以掌握 Git 技能很重要。由于 Git 开发效率高、团队协作方便,现在很多 IDE 都集成了 Git,并且提供一些相关的图形化操作。也有很多很优秀,专门用来简化 Git 操作的 Git GUI 工具,例如 Sourcetree,Tortoise 等。我刚接触 Git 的时候,就是从 GUI 入手的,使用 Sourcetree 可视化版本控制工具进行操作。Sourcetree 底层也是对常用的 Git 命令进行封装实现的,傻瓜式操作,使用非常方便,但是我用完什么都不懂,Git 的内部原理也不易理解,决定在回头仔细学习一下 Git 命令行。学习完 Git 命令行后发现,命令行很好学,非常灵活,而且使用起来非常帅气。因此,直接 Git 命令,才是最灵活的操作。
程序员小强
2021/04/29
5930
Git 备忘清单详解
Git
配置你的git信息,然后创建本地git仓库,与远程仓库进行连接,然后上传,下拉,整合。
收心
2022/01/17
3920
Git
【Git】Common Git Command Line Operation
Common Git Command Line Operation | Chanvin's Blog (chanvinxiao.com)
阿东
2024/03/05
1610
【Git】Common Git Command Line Operation
前端必不可少的Git使用技巧
版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。
徐小夕
2019/10/08
5330
Git笔记
1.在工作目录中添加、修改文件; 2.将需要进行版本管理的文件放入暂存区域 3.将暂存区域的文件提交到版本仓库
菜鸟雷
2020/10/23
5530
Git笔记
一个小时学会Git
张果
2018/01/04
3.5K0
一个小时学会Git
开发者应该知道的 50 条最实用的 Git 命令
Git是一个分布式版本控制系统,可以帮助开发人员在任何规模的项目上进行协作。Linux内核的开发人员Linus Torvalds在2005年创建了Git,以帮助控制Linux内核的开发。
前端修罗场
2022/07/29
2.2K0
Git笔记
可以在GitHub下载离线版的笔记,链接如下:https://github.com/FangYang970206/GitNote,觉得不错的话,欢迎fork和star
努力努力再努力F
2018/09/11
1.1K0
Git笔记
Git使用总结
Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。
网络安全自修室
2020/07/22
7280
Git使用总结
Git 很难么?带你从头到尾捋一遍,不信你学不会!
对于Git,相信大多数程序员并不会感到陌生。但是运用自如可不是一日之功,这可不,上次面阿里,就卡在了对 Git的各种理论理解与实际应用上。
民工哥
2022/04/08
6680
Git 很难么?带你从头到尾捋一遍,不信你学不会!
27.git的简单使用
安装 https://git-scm.com/downloads 一直点下一步就可以,安装完后打开方法:‘开始菜单’-->'Git'-->''Git Bash 安装完成后设置名字和电子邮件  bash
zhang_derek
2018/04/11
9750
27.git的简单使用
走在前沿的弄潮儿,怎能不会Git的那些奇技淫巧
本文介绍了七十多种常用的 Git 命令与技巧,项目作者削微寒在开源工作上也做了非常多的贡献。目前 Git 奇技淫巧项目已经获得了 6.8K 的 Star,他还构建了另一个 1.1W+ 的开源项目集锦 HellowGitHub。
机器之心
2019/05/07
9560
走在前沿的弄潮儿,怎能不会Git的那些奇技淫巧
三年 Git 使用心得 & 常见问题整理
「使用场景:」 当你接到一个修复紧急 bug 的任务时候,一般都是先创建一个新的 bug 分支来修复它,然后合并,最后删除。但是,如果当前你正在开发功能中,短时间还无法完成,无法直接提交到仓库,这时候可以先把当前工作区的内容 git stash 一下,然后去修复 bug,修复后,再 git stash pop,恢复之前的工作内容。
Nealyang
2020/06/19
3K0
三年 Git 使用心得 & 常见问题整理
Git使用教程
官网下载:https://git-scm.com/downloads 下载完成后使用默认进行安装。
张小驰出没
2021/12/06
7200
git使用步骤_小猪酸奶的使用步骤
接触Git也些年头了,对于Git的使用也算是略有心得,想着 出于自己日后回顾,也便于他人查阅学习的目的,遂有此文, 相信看完此文你的Git使用会更进一步,谢谢~
全栈程序员站长
2022/11/08
1.2K0
git使用步骤_小猪酸奶的使用步骤
工作效率翻倍:Git实用命令集锦
什么是版本控制?我真的需要吗?版本控制是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统。
星辰大海的精灵
2024/04/10
1310
相关推荐
2021-1-7-一文掌握git/github使用,内容详细,适合小白~
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验