WWW.lllT.neT从其本质上讲,Git可以纪录文字的转变,但其界定是一个版本号自动控制系统。您有很有可能早已以这类或那类方法应用了git:因为它的分布式系统特性,它是编码版本管理的事实标准,与集中型的Apache Subversion(SVN)相对性。

组装 git

要检验是不是安裝了Git,在终端设备运作:

$ git version
git version 2.27.0.rc1.windows.1

要是没有组装,请依照 http://www.lllt.net/img/20211203/hcwdhydtuyu 上的表明。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 <MESSAGE> 是一个简洁明了的指令,你能用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 'dev'
# 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 'main'
# 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.

由于文档在同一个地区被改动了2次,大家就造成了矛盾。看一下这一文档

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 'recursive' 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 'story'
# [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 'log --graph --decorate --pretty=oneline --abbrev-commit'
# Try it with `git tree`

另一个有效的别称是删掉全部合拼的支系。

git config --global alias.clbr '!git branch --merged | grep -v * | xargs git branch -D'

你能见到它的作为前缀是"!",这容许大家应用一切指令,而不单单是git命令。

~完,我是洗碗智,今日礼拜六写的,要提前准备去洗碗了,骨的白!

▎创作者:Valeria 译员:前面小编 来源于:dev 全文:https://dev.to/valeriavg/master-git-in-7-minutes-gai

以上便是10min一步步陪你看了最常见的git命令的详尽具体内容,大量请关心自学java网其他相关文章!

WWW.lllT.neT

声明:有的资源来自网络转载,版权归原作者所有,如有侵犯到您的权益请联系邮箱:our333@126.com我们将配合处理!

原文地址:10min一步步陪你看了最常见的git命令发布于2021-12-07 20:00:02