git步骤

创建命令

命令格式(也就是在Ubuntu 终端上输入的命令)

说明

git init

初始化仓库

git config(--system\--globle)

配置git信息

在使用git前要先初始化git 然后再配置git

提交命令

命令格式(也就是在Ubuntu 终端上输入的命令)

说明

git add *

将工作区文件添加到暂存区

git rm --cached *

撤销暂存区的提交

git commit -m

将暂存区文件提交到本地仓库

git checkout * ./

将本地仓库文件拉取到工作区

git push

将本地仓库上传至远程仓库

git clone(仓库url)

拷贝远程仓库至本地,相当于下载一个项目

1.创建目录

mkdir dir

2.初始化目录

cd dir

git init

3.创建文件

(1)git status-----查看状态

(2)echo "hello git">welcome.html

这个状态和开始不一样,这个welcome.html文件当前状态是未跟踪,即这个文件尚未被加入到Git版控系统中。

(3)把文件交给git

使用git add(将工作区文件添加到暂存区)命令把对这个文件进行跟踪。

       git rm --cached *-----------------撤销暂存区的提交

从以上信息看出,这个文件状态已经变成了new file。表示文件已经被安置到暂存区(staging area),稍后与其他文件一起被存储到存储库中。

  这个暂存区也叫下标(index)。

  如果想要一次追踪多个文件,可以直接使用–all参数,或者通配符

通配符是一种特殊字符,用于匹配一组字符串中具有特定模式的文件名或其他文本内容。在不同的上下文中,如操作系统命令行、搜索工具或编程语言中,通配符有不同的形式和用法。以下是几种常见的通配符:

1. **Linux/Unix Shell 与 DOS/Windows 命令提示符中的通配符:**
   - `*`(星号):代表零个、一个或多个任意字符。例如,在Linux系统中使用`ls *.txt`可以列出所有以`.txt`结尾的文件。
   - `?`(问号):代表单个任意字符。比如,`file?.txt`会匹配`file1.txt`、`file2.txt`等只有一个任意字符后跟`.txt`的文件名。
   - `[ ]`(方括号):匹配括号内的任何一个字符。如`example[1-3].doc`会匹配`example1.doc`、`example2.doc`和`example3.doc`;而`example[a-z].doc`会匹配任何小写字母开头且以`.doc`结尾的文件。

2. **正则表达式中的通配符(虽然严格来说它们是正则元字符):**
   - `.`(点):在正则表达式中表示匹配除换行符外的任意单个字符。
   - `*`(星号):在某些正则引擎中,也表示前面的元素可以重复零次或多次。
   - `?`(问号):在正则表达式中通常表示前面的元素出现零次或一次。
   - `[]`(字符集):同样表示匹配括号内任一字符,但可以包括范围、否定及组合等更复杂的规则。

3. **Microsoft Word 或其他办公软件查找替换功能中的通配符:**
   - 在Word中,通配符可用于复杂查找和替换操作,如:
     - `^?` 表示任意单个字符
     - `^*` 在某些版本中可能表示任意数量的任意字符,但在Office文档查找中不常用
     - `[^abc]` 匹配除了a、b、c之外的任何字符

4. **编程语言中的通配符:**
   - 许多编程语言提供的路径操作函数或者字符串处理函数支持类似通配符的功能,比如Python中的`glob.glob()`函数,Java中的`java.nio.file.Files.newDirectoryStream()`方法等。

注意,不同环境下的通配符可能有所不同,使用时需要根据具体情境查阅相关文档。

(4)把暂存区的内容提交到存储库里存档

如果只是把通过git add命令把工作区文件加入到暂存区,还不算是完整的流程。如果想要暂存区里的内容保存下来,就要使用git commit命令

git commit -m "init commit"-------------------将暂存区文件提交到本地仓库[提交(代码)]

在后面加上-m "init commit"是要说明这次commit做了什么事,只要使用简单清楚的文本说明即可。能让自己和别人很快明白。

  完成这个动作后,对Git来说就是把暂存区的内容放到仓库(repository)中了。换言,就是我完成了一个存档的动作。

  那么,git commit到底commit了哪些东西:

首先要记住,Git的每次commit只会处理暂存区的内容。如果一个文件没有先执行git add命令,那么执行git commit也不会加入存储区。

在commit时,如果没有输入信息,Git默认是不会完成commit的,他最主要的目的是告诉你和其他人,这次改动做了什么(一个备注)。如果没有在后面没有加入信息参数,默认会弹出来一个vim。不过,加入–allow-empty参数,没有内容也是可以commit的。

  那么什么时候可以commit呢:

完成一个任务时:大到完成一整个电子商务的金流系统,小到只添加了一个页面甚至只改了几个字。
下班的时候:虽然还有可能没完成任务,但至少先commit今天的进度。
想要commit的时候:只要想commit,就可以commit。
 

4.查看记录

接下来介绍如何查看之前commit的记录。

  可以使用git log命令:

从上面这些信息中可以看出来以下内容:

commit的作者是谁
什么时候commit的
每次的commit大概做了什么


  至于上面的代码,是git中使用SHA1算法计算的结果,Git使用这样的字符串作为识别码,每个commit都有一个这样的值。

  以下是使用git查询历史记录时常见的问题:
(1)想要查找某个人的commit

如果要查找一个名叫sherly的作者的commit,可以使用以下命令:

git log --oneline --author="sherly"

(2)查找commit信息中是否含有某些关键字

  使用–grep参数,可以从commit信息中搜索符合关键字的内容,如搜索LOL:

git log --oneline --grep="LOL"

(3)怎么在commit文件中找到Ruby

  使用-S参数,可以在所有的commit文件中进行搜索,找到符合特定条件的内容:

git log -S "Ruby"


(4)怎么查找某一时段的commit

  在查看历史记录时,可以搭配–since和–unit还有–after参数查询:

git log --oneline --since="9am" --until="12am" --after="2017-01"

这样就可以找到从2017年1月之后,每天早上九点到十二点之间的commit。

5.如何在Git中删除文件或变更文件名

在Git中,无论是删除文件还是变更文件名,对Git来说都是一种改动。

5.1删除文件

(1)直接删除

可以用rm命令直接删除文件

rm welcome.html

(2)用Git删除

  可以先执行rm删除,再执行git add命令加入暂存区。也可以直接使用git rm命令完成。

        git rm welcome.html
这样它就直接在暂存区了,不需要add了。

(3)加入–cached参数

  不论执行rm,还是git rm命令,都会直接把这个文件删除,如果不想删除文件,只是不想让这个文件再被Git控制(撤销暂存区的提交),可以加入–cached参数:

        git rm welcome.html --cached

5.2变更文件名

(1)直接改名

  与删除文件一样,变更文件名也是一种改动。

mv hello.html world.html     //把hello.html改成world.html

(2)用Git改名

  和之前git rm一样,git也可以改名,少做一步

git mv hello.html world.html

事实上,Git是根据文件的内容来计算SHA1值得,所以文件的名称不重要。

6.修改commit记录

(1)使用–amend参数改动最后一次的commit。

  原来的记录是这样的:

如果要改动最后一次commit信息:

git commit --amend -m "welcome"

可以发现,对于Git来说,因为commit的内容改变了,所以Git会重新生成一个新的commit对象,这是一个全新的commit。

  虽然只是改动信息,但不管怎么说,它就是改动了一次历史记录,所以尽量不要在已经push出去后再改动。

(2)使用git reset命令拆掉重做

  先看一下现在的git记录:

如果想要拆掉最后一次commit,可以使用相对或绝对的办法,相对的办法是这样的:

git reset 372a7fc^

最后这个^表示前一次,所以上面指向的就是372a7fc这个commit的前一次,如果是两个,就代表commit的前两次。

  因为HEAD和master当前都是指向372a7fc这个commit,而且372a7fc不好记,所以上面这行代码通常改为:

git reset master^
git reset HEAD^

如果你很清楚要把当前状态回退到哪个commit,可以直接指明

git reset 820629d

注意,不要被reset误导了,这个词通常翻译是重新设置,但在Git中,更好地翻译是前往或者变成。

  使用git reset HEAD^^或者git reset HEAD~2这个命令应该被翻译成前往两个commit前的状态。中间的过程并没有完全删掉。

7. 查看特定文件的commit记录

git log可以查看整个项目的commit记录,但如果只想查看单一文件的记录,可以在后面加入文件名

git log welcome.html

这样就可以看到这个文件commit的记录,如果想要查看这个文件每次commit做了什么改动,可以再给它加上-p参数

git log -p welcome.html

可以看出来,welcome这次的commit是添加了一行hello git。

8.这行代码是谁写的

想要知道文件的某一行代码是谁写的,在Git中可以使用git blame命令帮你找出来:

git blame world.html

可以很清楚的看出来每一行代码是谁在哪个时候写下的,前面的代码是每次commit的结果,表示这一行代码是在那一次的commit中加进来的。

  如果文件很大,就可以加入-L参数,只显示特定行数的内容:

git blame -L 5,10 index.html

这样就可以查看第5-10行的信息。

9.不小心吧文件或目录删除了

这里现将所有的html文档删除:

这个时候,如果要把文件挽救回来,可以使用git checkout(将本地仓库文件拉取到工作区命令:

git checkout index.html

可以看到,文件回来了。如果想要把所有删除的文件都挽救回来,可以不加后缀,直接使用git checkout。

  那么,Git是怎么把文件挽救回来的呢?

  当时用git checkout命令时,这个命令会把存储区中的文件拿来覆盖当前工作目录中的文件。

  如果在执行这个命令时,多加一个参数
 

git checkout HEAD~2 welcome.html

 那么距离现在两个版本以上的那个welcome.html文件就会用来覆盖当前工作目录中的welcome.html文件。

10.使用分支

        在开发的过程中,一路向前commit也没什么问题,但当越来越多的同伴加入到一个项目中后,就不能这么随意想commit就commit了,这时分支就派上了用场。例如:想要新增功能或者修复BUG,又或是想要试试新的做法,都可以另外做一个分之来进行,在确保没问题之后再合并过来,不影响正在运行的产品线。

  在多人团队共同开发时,也可以引入Git Flow之类的开发程序,让同一个团队的人都用相同的方式进行开发。

10.1开始使用分支

在Git中使用分支非常简单,只要使用git branch命令:

git branch

如果git branch命令后面没有加任何参数,它仅会输出当前在这个项目中有哪些分支。Git默认会设置一个名为master的分支,前面的星号*表示现在正在这个分支上。

10.2新增分支

要增加一个分支,可以在执行git branch命令时,加上想要的分支的名称:

git branch cat

这个就新增了一个cat分支。

10.3更改分支名称

 如果觉得分支的名称不够响亮,可以随时更改,不会影响文件或目录。

  可以在git branch后加入-m参数:

git branch -m cat tiger

这样cat分支就变成了tiger分支。即使是master分支也是可以改的。

10.4删除分支

可以通过在git branch后加入-d参数进行删除

git branch -d cat

如果要删除的分支还没有被完全合并,Git会有提示。因为没有完全被合并,所以使用-d参数是无法删除的,这时需要使用-D参数强制删除。

  在Git中没有什么分支是不能删的,包括默认的master(master只是默认分支,并没有什么特别之处)。如果非要说什么分支不能删,就只有当前所在的分支不能删,需要在切换其他分支后才可以删除。


10.5切换分支

如果需要切换分支,用到git checkout:

git checkout cat

发现这个master分支时没有刚才的两个文件了。别担心,他们还都在,只是在不同的分支而已,切换回去就会出现了。

  注意,要切换到哪个分支时,对应分支必须先存在,不然会有错误。

  如果没有这个分支,在git branch后加入-b参数就可以了,相当于先创建分支,再切换过去。

10.6合并分支

任务执行的差不多了,就要准备合并回来了,如果想用master分支来合并cat分支,要切回master分支。

git checkout master

接下来,使用git merger命令合并分支

10.7不小心删掉了分支还可以找回么

对于合并过的分支,可以保留也可以删除,那么如果把没有合并的分支删除了,还能救回来么?

  分支只是一个指向某个commit的指标,删除这个指标并不会使得那些commit小时。所以,删除分支后那些commit都还在,只是因为你没有记录下这个commit的SHA1值,不方便拿来使用,既然存在,就可以在找回来:

git branch new_cat b174a5a

这个命令就是创建了一个名为new_cat的分支,让它指向了b174a5a这个commit。

  如果没有记下来刚刚删除的cat分支指向的commit的SHA1值,可以通过git reflog命令查找,reflog默认保留30天。

10.8可以从过去某个commit开始创建分支么

如果我在年轻时,一定会做出另一种选择。我们做不到,但Git可以。

如果要从之前的某个commit(657fce7)开始分支,只需要:

git branch bird 657fce7

这样就可以在这个commit上开了一个bird分支。

git branch

查看当前分支

git branch 分支名

创建分支

git checkout 分支名

切换分支

git checkout -b 分支名

创建并切换分支

git merge 分支名

合并分支

git branch -d 分支名

删除分支

11.标签

标签是什么?

  在Git中,标签(Tag)是一个指向某个commit的指示标。这看起来与分支很像,但又有一些不太一样的地方。

什么时候使用标签?

  通常在开发软件时会完成特定的里程碑,如软件版号1.0.0之类的,这时就很适合使用标签做标记。

(1)创建标签

git tag -a <标签名> //创建标签

git tag <标签名> -m <提示信息> //创建标签名 并设置提示信息 一般设置标签 默认是在 commit 最新提交的文件处创建标签 执行 git tag -a 命令时,Git 会打开你的编辑器,让你写一句标签注解,就像你给提交写注解一样。

(2)查看标签

git tag //查看标签 git log //查看 提交日志

(3)删除标签

git tag -d <标签名>

(4)查看标签具体信息

git show <标签名>

(5)恢复到指定标签位置

git reset --hard <标签名>

11.1标签的分类

标签有两种,一种是轻量标签,另一种是有附注的标签。不管是哪一种标签,都可以把它当做贴纸,贴在某个commit上。

(1)轻量标签

  轻量标签的使用方法非常简单,只需要直接指定要贴上去的那个commit即可:

这样就可以在a42ada4这个commit上打上big_cats的标签了。

  如果tag之后没有指定commit,标签就会贴在当前所在的commit上。

  轻量标签只是一个指向某个commit的指示标,不含有其他信息,所以Git比较推荐使用有附注的标签。

(2)有附注的标签

  如果要创建一个有附注的标签:
 

git tag big_cats a42ada4 -a -m "Big Cats are comming"

分支和标签的区别在于,分支会随着commit移动,但标签不会,因此,分支可以看做是会移动的标签。

  • 18
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值