美文网首页
Git?Git!Git.Git…

Git?Git!Git.Git…

作者: 过来摸摸头丶 | 来源:发表于2019-07-19 12:09 被阅读0次

Git?

Git是一个免费、开源基于分布式架构的代码版本控制工具。

Git!

学习Git必须要了解的有三种状态:

  • 已提交(commited):表示数据安全的保存在本地数据中。

  • 已修改(modified):表示修改了文件,但没有保存到数据库中。

  • 已暂存(staged):表示对修改文件的当前版本做了标记。

学习Git必须要了解的三个工作区域:本地工作目录、暂存区、Git远程仓库。如下图所示:

三个工作区域

本地工作目录:对项目的某个版本独立提取出来到本地的目录。

暂存区:它是一个文件,保存了你在本地对项目做的修改的部分。

Git远程仓库:保存项目的元数据的地方,即因特网上面公共的主要仓库。

如上,基本的流程就是:

  • 1.在工作目录中修改文件

  • 2.把修改的文件提交到暂存区

  • 3.将暂存区的文件提交到本地仓库

  • 4.推送,永久性保存到Git远程仓库

Git基础

1.运行Git前的配置

配置账号

安装完Git后第一件事就是设置你的账户名称与邮件地址,因为每一个GIt的提交都会使用这些信息,并且它会写入你的每一次提交中,不可修改:

$ git config --global user.name "xxxx"
$ git config --global user.email xxxx@163.com

检查配置信息

如果要检查你的配置信息,可以使用git config --list列出所有Git当时能找到的配置。

$ git config --list
user.name=John Doe
user.email=johndoe@example.com
color.status=auto
color.branch=auto
color.interactive=auto
color.diff=auto
...

如果想要查某个key,可以使用git config <key>

$ git config user.name
xxxx

2.获取Git仓库

有两种获取方法:第一种是在现有目录下导入所有文件到Git仓库种;第二种是从一个服务器克隆一个现有的Git仓库。

在现有目录中初始化仓库

在现有的工程目录下:

$ git init

会发现有个隐藏文件.git目录,这个目录不要改动。

然后,把本地仓库与远程仓库关联:

$ git remote add origin git@github.com:demo.git
$ git push -u origin master

## origin是远程仓库的名字,这是Git默认的
## git@github.com:demo.git 是远程仓库的路径
## $ git push <远程主机名> <本地分支名>:<远程分支名>
## -u 指定origin为默认仓库,以后push就不用加了。

克隆现有的仓库

克隆仓库的命令格式为:git clone [url]

$ git clone https://github.com/demo.git

3.记录每次更新到仓库

检查当前文件状态

$ git status
On branch master
nothing to commit, working directory clean

## 没有修改要提交,默认分支名为master

现在,创建一个新的 README 文件,使用git status

$ echo 'My Project' > README
$ 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)

## README 文件出现在 Untracked files 下面,表示在之前到快照中没有这些文件。

跟踪新文件

$ git add README
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   README

## Changes to be committed :表示文件是已暂存状态

如果是下面这样:

$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   README

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   HELLO.md

Changes to be committed 表示:工作目录做了修改并且放到了暂存区。

Changes not staged for commit 表示:工作目录做了修改,但没有放到暂存区。

此时需要git add HELLO.md,在查看状态

$ git add CONTRIBUTING.md
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   README
    modified:   CONTRIBUTING.md

状态概览

git status命令的输出太多了,如果git status -s命令,可看到一种更紧凑的输出。

$ git status -s
   M README
MM Rakefile
A  lib/git.rb
M  lib/simplegit.rb
?? LICENSE.txt
  • ?? :新添加的还没有添加到暂存区的文件;

  • A:新添加到暂存区中的文件;

  • 右边的 M :表示该文件被修改了但是还没放入暂存区;

  • 左边的 M :表示该文件被修改了并放入了暂存区;

例如,上面的状态显示: README 在工作区被修改后还没有将文件放入暂存区;lib/simplegit.rb 文件被修改了并放入了暂存区; 而 Rakefile 在工作区被修改并提交到暂存区后,又在工作区中被修改了,所以在暂存区和工作区都有该文件被修改了的记录。

提交更新

每次提交前,先用git status看下,是不是都暂存起来了 ,然后在用提交命令:

$ git commit -m "fitst commit"
[master 463dc4f] fitst commit
 2 files changed, 2 insertions(+)
 create mode 100644 README

它会告诉你当前是master分支提交的,本次提交的SHA-1校验是463dc4f,本次提交中,有2个文件修改过,2行添加过。

移除文件

  • 已经全部提交后,在工作目录删除文件后,运行git status就会看到做到哪些修改,可以在"Changes not staged for commit"部分看到:
$ rm PROJECTS.md
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        deleted:    PROJECTS.md

no changes added to commit (use "git add" and/or "git commit -a")
  • 如果想要删除暂存区的一些文件,使用git rm ${file}命令:
$ git rm PROJECTS.md
rm 'PROJECTS.md'
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    deleted:    PROJECTS.md

在使用上面的命令删除做过修改并放入暂存区的文件,需要使用-f参数。用于防止误删还没有添加到快照的数据,这样的数据不能被 Git 恢复。

相关文章

网友评论

      本文标题:Git?Git!Git.Git…

      本文链接:https://www.haomeiwen.com/subject/dlaklctx.html