Git(一)——入门

来源:互联网 发布:售楼软件哪家好 编辑:程序博客网 时间:2024/06/03 21:02

一.使用前配置

  Git 自带一个 git config 的工具来帮助设置控制 Git 外观和行为的配置变量。 这些变量存储在三个不同的位置:
  /etc/gitconfig 文件: 包含系统上每一个用户及他们仓库的通用配置。 如果使用带有 –system 选项的 git config 时,它会从此文件读写配置变量(对应Windows文件在 git 的安装目录下$git\mingw64\etc)。
  ~/.gitconfig 或 ~/.config/git/config 文件:只针对当前用户。 可以传递–global 选项让 Git 读写此文件(对应Windows文件在C:\Users\$USER目录下的.gitconfig)。
  当前使用仓库的 Git 目录中的 config 文件(就是 .git/config):针对该仓库。
  每一个级别覆盖上一级别的配置。

1.配置全局用户名及邮箱

  当安装完 Git 应该做的第一件事就是设置用户名称与邮件地址。这样做很重要,因为每一个 Git 的提交都会使用这些信息,每次输入该命令都会覆盖上次输入的值:

$ git config --global user.name "username"$ git config --global user.email "email"

  如果使用了 –global 选项,那么该命令只需要运行一次,因为之后无论你在该系统上做任何事情, Git 都会使用这些信息。 当你想针对特定项目使用不同的用户名称与邮件地址时,可以在那个项目目录下运行不使用 –global 选项的命令来配置(即为当前项目配置用户名)。

2.配置项目的用户名及邮箱

  如果想要在当前项目中使用非全局的用户名或邮箱,可以使用不带–global参数的命令设置项目专属用户名及邮箱。

$ git config --global user.name "username"$ git config --global user.email "email"

  正如上文所说每一个级别覆盖上一级别的配置。

3.增加/删除配置

(1).添加配置项
参数 -–add
格式 : git config [–local|–global|–system] –add section.key value(如果不输入–local、–global、–system等参数,默认是添加在 local 配置中)
注意add后面的 section, key, value 一项都不能少,否则添加失败。比如执行:

$ git config --add section.key value

(2).删除配置项
参数 -–unset
格式 : git config [–local|–global|–system] –unset section.key

$ git config --local --unset section.key

二.创建本地版仓库

  仓库又称之为版本库,可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。
  创建版本库步骤如下:

1.选定仓库位置

$ mkdir learn_git$ cd learn_git/

  以上两行命令是创建一个空的目录并进入该目录。当然我们也可以使用已存在的目录作为仓库。
  为了避免遇到各种莫名其妙的问题,应注意目录名(包括父目录)不包含中文。

2.初始化仓库

$ git initInitialized empty Git repository in D:/Workspace/Git_Repositories/learn_git/.git/

  通过git init命令将当前所在目录初始化为 git 仓库,如果初始化成功会出现第二行的提示,此时通过命令ls -a可以看到learn_git目录下会出现一个.git的目录(该目录是Git来跟踪管理版本库的)。

三.提交文件

  这里先明确一下,所有的版本控制系统,其实只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码等等,Git也不例外。版本控制系统可以告诉你每次的改动,比如在第5行加了一个单词“Linux”,在第8行删了一个单词“Windows”。而图片、视频这些二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是只知道图片从100KB改成了120KB,但到底改了啥,版本控制系统不知道,也没法知道。
  首先我们先创建一个需要提交的文件:

$ vim hello_git.txt

  通过上述命令编辑一个文件,在该文件中写入以下内容并保存创建hello_git.txt。

hello git

  注意 : 该需要提交的文件必须在git仓库的目录下,因为 git 并不能管理仓库之外的文件。
  提交文件步骤如下:

1.将需要提交的文件加入仓库

$ git add hello_git.txt

  执行上述命令将hello_git.txt加入仓库,如果没有任何提示则表明添加成功。可反复多次使用,添加多个文件。

2.将文件提交

$ git commit

  通过上述命令将仓库中未提交的文件进行提交。此时会提示要求输入本次提交的描述,输入后保存并退出即可。然后会出现本次提交的信息如下:

[master (root-commit) c0b1656] first commit hello_git.txt 1 file changed, 1 insertion(+) create mode 100644 hello_git.txt

四.修改文件

1.查看 git 仓库的状态

  通过命令 vim hello_git.txthello_git.txt 做任意修改后保存并退出编辑。然后通过命令 git status 查看当前 git 仓库的状态 :

$ git statusOn branch masterChanges 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_git.txtno changes added to commit (use "git add" and/or "git commit -a")

  上述输出告诉我们 hello_git.txt 已经被修改了但是还未准备好提交。

2.查看文件的修改内容

  通过命令 $ git status 我们只能看到文件配修改了但是并不知道具体修改的内容,如果想要知道文件那些内用被修改了,可以通过命令 git diff 查看。输出如下 :

$ git diffdiff --git a/hello_git.txt b/hello_git.txtindex 8d0e412..45a827c 100644--- a/hello_git.txt+++ b/hello_git.txt@@ -1 +1,2 @@-hello git+hello_git+first changexuexi@xuexin MINGW64 /d/Workspace/Git_Repositories/learn_git (master)

  通过查看我们可以了解到本次修改将第一行的 hello git 改为了 hello_git ,并且添加了第二行 first change

3.提交修改

  通过命令 git diff 我们了解到了我们修改的内容,如果确认修改无误之后就可以进行提交,提交修改还是分两步走首先通过命令 git add

$ git add hello_git.txt

  此时还是没有任何输出提示,则表示成功。而在 git commit 命令之前,我们在通过 git status 命令查看此时的 git 仓库状态,输出如下 :

$ git statusOn branch masterChanges to be committed:  (use "git reset HEAD <file>..." to unstage)        modified:   hello_git.txt

  此时表示已经准备好提交 hello_git.txt 文件了,但如果想要发现 hello_git.txt 文件不需要被提交,可以通过命令 $ git reset 来移除准备提交,命令如下 :

$ git reset hello_git.txtUnstaged changes after reset:M       hello_git.txt

  此时相当于又回到了第 (1) 步。现在通过命令 git add 重新将文件 hello_git.txt 进行准备提交。命令如下 :

$ git add --a$ git statusOn branch masterChanges to be committed:  (use "git reset HEAD <file>..." to unstage)        modified:   hello_git.txt

  其中第一行 --a 表示将所有“ 已追踪 ”状态的文件添加入准备更新行列中。最后再通过 git commit 提交本次修改。本次提交后的输出如下 :

$ git commit[master f98631f] first change 1 file changed, 2 insertions(+), 1 deletion(-)

五.版本回退

  此时将 hello_git.txt 进行再一次修改并提交。

1.查看历史修改

  此时我们的 git 仓库已经有了三个版本 (1.创建hello_git.txt ; 2.第一次修改 ; 3.第二次修改),通过命令$ git log 查看历史修改的版本。

$ git logcommit 96ba3e1216182448a7380fda821219d69fdd101f (HEAD -> master)Author: xuexin <h_xxin1994@163.com>Date:   Sun Nov 19 22:47:05 2017 +0800    second changecommit f98631f2beae4871acb00a582308193b5b57bd51Author: xuexin <h_xxin1994@163.com>Date:   Sun Nov 19 22:22:58 2017 +0800    first changecommit c0b1656f77e9f5587aee6209995a37dd43054c16Author: xuexin <h_xxin1994@163.com>Date:   Sat Nov 18 19:13:04 2017 +0800    first commit hello_git.txt

  git log命令显示从最近到最远的提交日志\。
如果嫌输出信息太多,可以试试加上 --pretty=oneline参数:

$ git log --pretty=oneline96ba3e1216182448a7380fda821219d69fdd101f (HEAD -> master) second changef98631f2beae4871acb00a582308193b5b57bd51 first changec0b1656f77e9f5587aee6209995a37dd43054c16 first commit hello_git.txt

  --pretty 参数的取值除了用还可以用 oneline 之外还能使用 --format 等;另外除了 --pretty 参数还能使用 --since “ 等参数,此处就不列举。

2.版本回退

  首先,Git必须知道当前版本是哪个版本,在Git中,用 HEAD 表示当前版本,上一个版本就是 HEAD^ ,上上一个版本就是 HEAD^^ ,当然往上100个版本写100个^比较容易数不过来,所以写成 HEAD~100 。而我们可以通过使用 git reset 命令进行版本的回退,命令如下 :

$ git reset --hard HEAD^HEAD is now at f98631f first change

  其中 f98631f 表示提交的版本号,该值又 git 管理,暂时无需理会,而 first change 则是我们当时提交时输入的更新描述。
  此时我们还可以继续回退到上一个版本(第一版),不过如果此时我们用 git log 再看看现在版本库的状态:

$ git log --pretty=onelinef98631f2beae4871acb00a582308193b5b57bd51 (HEAD -> master) first changec0b1656f77e9f5587aee6209995a37dd43054c16 first commit hello_git.txt

  此时第三版的记录已经查不到了,如果想要回到第三版可以通过命令 git reflog 用来记录你的每一次命令 :

$ git reflogf98631f (HEAD -> master) HEAD@{0}: reset: moving to HEAD^96ba3e1 HEAD@{1}: reset: moving to HEAD96ba3e1 HEAD@{2}: commit: second changef98631f (HEAD -> master) HEAD@{3}: commit: first changec0b1656 HEAD@{4}: commit (initial): first commit hello_git.txt

  此时我们就可以看到第三版的id值 96ba3e1,通过 git reset --hard commit_id进行回退。

$ git reset --hard 96ba3HEAD is now at 96ba3e1 second change

六.小结

1.属性配置

  通过 git config 进行属性的配置,可以使用三个参数(1.系统配置 --system 2.全局配置--global 3.本地配置(仅对当前项目有效) --local ),如果不填写这三个参数中的任意一个参数默认使用 --local
  通常在安装完成 git 客户端后都需要配置全局用户名及邮箱,每次提交文件使都会有该附上提交人的用户名及邮箱。

$ git config --global user.name "username"$ git config --global user.email "email"

2.创建本地仓库

  进入选定的目录后使用命令 git init 将该目录初始化为 git 仓库,可以通过 ls -a 查看当前目录下可以看到名为 .git 的文件即表示成功。

3.提交文件

  添加文件到Git仓库,分两步:
  第一步 : 使用命令git add将文件添加入工作区,可反复多次使用添加多个文件。如果想要一次性将所有已追踪的文件加入可以使用 git add --a
  第二步 : 使用命令git commit -m "描述信息"工作区的文件提交至本地仓库。

4.修改文件

  使用命令 git status 可以随时掌握 git 仓库的状态。
  使用命令 git diff 可以查看已经修改的内容。

5.版本回退

   使用命令 git log 查看提交的历史。
   使用命令 git reset 回退至某个版本,如回退至上个版本使用 git reset --hard HEAD^ ,其中 HEAD 表示当前版本,^表示上一版本,可以使用n个 ^ 回退至 n 个前版本,也可以使用版本 id 回退至指定版本。
  如果回退过头要前进值某版本,使用 git reflog 查看命令历史可以知道版本id。