首页 开发工具 git 10分钟一步步带你看完最常用的git命令

10分钟一步步带你看完最常用的git命令

Aug 27, 2021 pm 02:04 PM
git命令

从本质上讲,Git可以记录文本的变化,但其定义是一个版本控制系统。你有可能已经以这种或那种方式使用了git:由于它的分布式性质,它是代码版本控制的事实标准,与集中式的Apache Subversion(SVN)相对。

安装 git

要检查是否安装了Git,在终端运行:

$ git version
git version 2.27.0.rc1.windows.1
登录后复制

如果没有安装,请按照 https://git-scm.com/downloads 上的说明。Mac用户可以用brew来安装它:brew install git。

配置 git

我们只需要配置一些东西

git config --global user.name "前端小智" && # 你的名字
git config --global user.email johndoe@example.com && # 你的邮箱
git config --global init.defaultbranch main # 默认分支名称,与GitHub兼容
登录后复制

可以用下面命令查看当前的全局配置

git config --global --list
# Type ":q" to close
登录后复制

git在纯文本中存储配置,如果你想直接修改,可以直接在~/.gitconfig或~/.config/git/config中编辑全局配置。

正如命令所建议的那样,去掉--global会使这些命令的适用范围扩大到当前文件夹。但要测试这一点,我们需要一个存储库。

创建新存储库

存储库只是一个文件夹,里面有我们想跟踪的所有东西。通过命令创建:

mkdir gitexample && 
cd gitexample && 
git init
# gitexample git:(main)
登录后复制

这个命令在gitexample文件夹内创建了一个.git文件夹。这个隐藏的.git文件夹就是版本库:所有的本地配置和修改都存储在这里。

改变

在存储库中创建一些东西:

echo "Hello, Git " >> hello.txt
登录后复制

运行git status,我们会看到新创建的未被追踪的文件。

git status
# On branch main
# 
# No commits yet
# 
# Untracked files:
#  (use "git add <file>..." to include in what will be committed)
#   hello.txt
#
# nothing added to commit but untracked files present (use "git add" to track)
登录后复制

根据提示建议,我们添加文件:

git add .
登录后复制

如果我们不想要所有文件提添加可以使用

git add hello.txt
登录后复制

如果你现在检查版本库的状态,你会看到文件已经被添加了(又称staged),但还没有提交。

git status
# On branch main
# 
# No commits yet
# 
# Changes to be committed:
#  (use "git rm --cached <file>..." to unstage)
#   new file:   hello.txt
登录后复制

为了记录这些变化,我们来提交它。

git commit -m "Add hello.txt"
# [main (root-commit) a07ee27] Adds hello.txt
# 1 file changed, 2 insertions(+)
# create mode 100644 hello.txt
登录后复制

git commit -m 是一个简短的命令,你可以用git commit打开编辑器(主要是vim),提供详细的提交描述。

检查提交记录:

git log
# Author: qq449245884 <44924566884@qq.com>
# Date:   Sat Jul 17 14:57:24 2021 +0800
#
#    Add hello.txt
#
登录后复制

创建分支

在很多情况下,拥有一个独立的初始代码版本是很有用的:例如,在测试你不确定的功能时,或者在一起工作时避免代码冲突。这正是git分支的意义所在:它从历史上的一个特定点开始生长。

要创建分支,运行git branch NAME,要切换分支,运行git checkout NAME。或者简单地

git checkout -b dev # 切换到一个名为“dev”的新分支
# Switched to a new branch &#39;dev&#39;
# gitexample git:(dev)
登录后复制

我们在Hello.txt文件中更改一些内容并提交更改:

echo "\nHello, Git Branch" >> hello.txt &&
git commit -am "Change hello.txt"
登录后复制

现在,切换到主分支:

git checkout main &&
cat hello.txt
# Switched to branch &#39;main&#39;
# Hello, Git
登录后复制

正如你所看到的,文件内容仍然和原来一样。为了比较分支,我们可以运行。

git diff dev
# diff --git a/hello.txt b/hello.txt
# index 360c923..b7aec52 100644
# --- a/hello.txt
# +++ b/hello.txt
# @@ -1,3 +1 @@
# Hello, Git
# -
# -Hello, Git Branch
# (END)
# type ":q" to close
登录后复制

我们在主分支中进行更改:

echo "\nHi from Main Branch" >> hello.txt &&
git commit -am "Change hello.txt from main"
# [main 9b60c4b] Change hello.txt from main
# 1 file changed, 2 insertions(+)
登录后复制

现在让我们试着把这些变化合并起来。

git merge dev
# Auto-merging hello.txt
# CONFLICT (content): Merge conflict in hello.txt
# Automatic merge failed; fix conflicts and then commit the result.
登录后复制

因为文件在同一个地方被修改了两次,我们就产生了冲突。看看这个文件

cat hello.txt
<<<<<<< HEAD
Hello, Git
Hi from Main Branch
=======
Hello, Git
>>>>>>> dev
登录后复制

还有一个命令可以单独查看更改:

git diff --ours # :q to close 
git diff --theirs #:q to close
登录后复制

你可以手动编辑文件并提交修改,但我们设想一下,我们只想要其中一个版本。我们就从中止合并开始。

git merge --abort
登录后复制

并以 "theirs"策略重新启动合并,这意味着在发生冲突时,我们将使用传入的分支所坚持的东西。

git merge -X theirs dev
# Auto-merging hello.txt
# Merge made by the &#39;recursive&#39; strategy.
# hello.txt | 5 +----
# 1 file changed, 1 insertion(+), 4 deletions(-)
登录后复制

与此策略相反的是 "ours"。将这两个改动合并在一起,需要手动编辑(或使用git mergetool)。

查看所有分支运行的列表

git branch # type :q to close
#  dev
# * main
登录后复制

最后,删除分支运行:

git branch -d dev
# Deleted branch dev (was 6259828).
登录后复制

重置分支

分支从 git 历史中的某一点开始 "生长(grow)",rebase 允许改变这个点。我们再创建一个分支,并在hello.txt上添加一些改动。

git checkout -b story &&
echo "Once upon a time there was a file">>story.txt &&
git add story.txt &&
git commit -m "Add story.txt"
# Switched to a new branch &#39;story&#39;
# [story eb996b8] Add story.txt
# 1 file changed, 1 insertion(+)
# create mode 100644 story.txt
登录后复制

现在,我们回到主分支并添加更改:

git checkout main &&
echo "Other changes" >> changes.txt &&
git add changes.txt &&
git commit -m "Add changes.txt"
登录后复制

重置我们在main到story分支所做的更改:

git checkout story &&
git rebase main
# Successfully rebased and updated refs/heads/story.
登录后复制

可以看到在主分支创建的新文件被添加到story 分支。

ls
# changes.txt hello.txt   story.txt
登录后复制

注意:不要rebase 别人可能使用过的分支,例如主分支。另外,请记住,在远程版本库上进行的每一次历史操作都需要强制这些修改生效。

远程存储库

如果你还没有,请创建一个GitHub账户,登录并创建一个新的空仓库(私有或公共)。

假设版本库的名字是 "example",运行以下命令(改成你的用户名)。

git remote add origin git@github.com:USERNAME/example.git &&
git push -u origin main
登录后复制

你可以刷新页面,看到主分支的文件。要把所有本地分支推送到远程仓库,请运行。

git push --all origin
登录后复制

我们在GitHub上编辑一些东西:只要点击任何文件和铅笔图标。添加一行你想要的任何文字,然后按 "提交修改"。

在本地运行这个命令,以获得远程的变化。【推荐:Git教程

git checkout main &&
git pull
登录后复制

管理未提交的更改

如果你想保存你的本地修改以便以后使用,你可以使用git stash。

echo "Changes" >> hello.txt &&
git stash
登录后复制

现在你可以使用以下命令来检查、应用或放弃这些变化。

git stash list
# stash@{0}: WIP on main: 92354c8 Update changes.txt
git stash pop # 应用更改
git stash drop # 撤销修改
登录后复制

你可以使用 stash 编号,即git stash pop 0来应用一个特定的储藏库,或者git stash drop 0来撤销。

如果你想放弃所有的本地修改,只需恢复版本库到最后提交的修改,请运行。

git restore .
登录后复制

管理提交的更改

一旦你创建了一个提交,这个变化就会保存在本地的git历史中。如前所述,所有影响远程历史的修改都需要git push --force。以下所有命令都要记住这一点。

我们从编辑最后的提交信息开始。

git commit --amend # type :wq to save and close
# Press "i" to edit, "Esc" to stop editing
登录后复制

我们把一切重设到最开始怎么样?

要找到第一次提交的ID,请运行这个命令并滚动(向下箭头)到最后。

git log --abbrev-commit
# commit a07ee27
# Author: Your Name <your@email.address>
Date:   Sun Jul 11 11:47:16 2021 +0200
    Adds hello.txt
(END)
# type ":q" to close
登录后复制

现在运行这个来重置版本库,但保持所有的修改不被缓存。

git reset --soft COMMIT # e.g. a07ee27
登录后复制

与之相反,你也可以进行硬重置,用git reset --hard COMMIT来删除所有修改。还有几种其他的重置方式,你可以从git文档中了解到。

别名

大多数时候,你只需要使用少数几个命令(主要是checkout、add、commit、pull、push和merge),但有些命令可能是你想要“以防万一”的。

存储这些信息的一种方法是git aliases。要配置一个别名,只需在配置中设置它。例如,我经常使用的一个别名是git tree,它以树的形式打印出一个漂亮的历史日志。

git config --global alias.tree &#39;log --graph --decorate --pretty=oneline --abbrev-commit&#39;
# Try it with `git tree`
登录后复制

另一个有用的别名是删除所有合并的分支。

git config --global alias.clbr &#39;!git branch --merged | grep -v \* | xargs git branch -D&#39;
登录后复制

你可以看到它的前缀是"!",这允许我们使用任何命令,而不仅仅是git命令。

~完,我是刷碗智,今天礼拜六写的,要准备去刷碗了,骨的白!

▎作者:Valeria 译者:前端小智 来源:dev 原文:https://dev.to/valeriavg/master-git-in-7-minutes-gai

以上是10分钟一步步带你看完最常用的git命令的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

git vs. github:版本控制和代码托管 git vs. github:版本控制和代码托管 Apr 11, 2025 am 11:33 AM

Git是版本控制系统,GitHub是基于Git的代码托管平台。Git用于管理代码版本,支持本地操作;GitHub提供在线协作工具,如Issue跟踪和PullRequest。

git怎么更新代码 git怎么更新代码 Apr 17, 2025 pm 04:45 PM

更新 git 代码的步骤:检出代码:git clone https://github.com/username/repo.git获取最新更改:git fetch合并更改:git merge origin/master推送更改(可选):git push origin master

git怎么下载项目到本地 git怎么下载项目到本地 Apr 17, 2025 pm 04:36 PM

要通过 Git 下载项目到本地,请按以下步骤操作:安装 Git。导航到项目目录。使用以下命令克隆远程存储库:git clone https://github.com/username/repository-name.git

Github难以学习吗? Github难以学习吗? Apr 02, 2025 pm 02:45 PM

GitHub不难学。1)掌握基础知识:GitHub是基于Git的版本控制系统,帮助追踪代码变化和协作开发。2)理解核心功能:版本控制记录每次提交,支持本地工作和远程同步。3)学习使用方法:从创建仓库到推送提交,再到使用分支和拉取请求。4)解决常见问题:如合并冲突和忘记添加文件。5)优化实践:使用有意义的提交消息,清理分支,使用项目板管理任务。通过实践和社区交流,GitHub的学习曲线并不陡峭。

git commit怎么用 git commit怎么用 Apr 17, 2025 pm 03:57 PM

Git Commit 是一种命令,将文件变更记录到 Git 存储库中,以保存项目当前状态的快照。使用方法如下:添加变更到暂存区域编写简洁且信息丰富的提交消息保存并退出提交消息以完成提交可选:为提交添加签名使用 git log 查看提交内容

git怎么生成ssh密钥 git怎么生成ssh密钥 Apr 17, 2025 pm 01:36 PM

为了安全连接远程 Git 服务器,需要生成包含公钥和私钥的 SSH 密钥。生成 SSH 密钥的步骤如下:打开终端,输入命令 ssh-keygen -t rsa -b 4096。选择密钥保存位置。输入密码短语以保护私钥。将公钥复制到远程服务器上。将私钥妥善保存,因为它是访问帐户的凭据。

git下载不动怎么办 git下载不动怎么办 Apr 17, 2025 pm 04:54 PM

解决 Git 下载速度慢时可采取以下步骤:检查网络连接,尝试切换连接方式。优化 Git 配置:增加 POST 缓冲区大小(git config --global http.postBuffer 524288000)、降低低速限制(git config --global http.lowSpeedLimit 1000)。使用 Git 代理(如 git-proxy 或 git-lfs-proxy)。尝试使用不同的 Git 客户端(如 Sourcetree 或 Github Desktop)。检查防火

git和github相同吗? git和github相同吗? Apr 08, 2025 am 12:13 AM

Git和GitHub不是同一回事。Git是版本控制系统,GitHub是基于Git的代码托管平台。Git用于管理代码版本,GitHub提供在线协作环境。

See all articles