Git 二三事

什么是 Git

Git 是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git 的读音为/gɪt/。

Git 是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
本文地址:http://tigerliu.site/2017/06/Git-1/

1. Git 版本库

什么是版本库?版本库又名仓库,英文名 repository,你可以简单的理解一个目录,这个目录里面的所有文件都可以被 Git 管理起来,每个文件的修改,删除,Git 都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻还可以将文件”还原”。
所以创建一个版本库也非常简单,如下我是 D 盘 –> www 下 目录下新建一个 testgit 版本库
此处输入图片的描述

通过命令 git init 把这个目录变成 git 可以管理的仓库,如下:
此处输入图片的描述

这时候你当前 testgit 目录下会多了一个.git 的目录,这个目录是 Git 来跟踪管理版本的,没事千万不要手动乱改这个目录里面的文件,否则,会把 git 仓库给破坏了。如下:
此处输入图片的描述
把文件添加到版本库中。
首先要明确下,所有的版本控制系统,只能跟踪文本文件的改动,比如 txt 文件,网页,所有程序的代码等,Git 也不列外,版本控制系统可以告诉你每次的改动,但是图片,视频这些二进制文件,虽能也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是知道图片从 1kb 变成 2kb,但是到底改了啥,版本控制也不知道。

2. Git 常用命令

git init 初始化 git 仓库

git add 添加到暂存区

  • git add .

他会监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区,包括文件内容修改(modified)以及新文件(new),但不包括被删除的文件。

  • git add -u

他仅监控已经被 add 的文件(即 tracked file),他会将被修改的文件提交到暂存区。add -u 不会提交新文件(untracked
file)。(git add –update 的缩写)

  • git add -A

是上面两个功能的合集(git add –all 的缩写)

  • git add xx 文件名

单个文件添加到仓库

总结:

·  git add -A  提交所有变化
·  git add -u  提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)
·  git add .  提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件

  • 提交到仓库
1
$ git commit -m '注释xxx'
  • 查看是否还有文件未提交
1
$ git status
  • 查看某文件是否有改动
1
$ git diff xxx文件名
  • 查看下历史记录
1
$ git log
  • 查看日志单行显示
1
$ git log –pretty=oneline
  • 那么如果要回退到上上个版本只需把 HEAD^ 改成 HEAD^^
1
$ git reset –-hard HEAD^
  • 以此类推。那如果要回退到前 100 个版本的话,使用上面的方法肯定不方便,我们可以使用下面的简便命令操作
1
$ git reset –-hard HEAD~100

此处输入图片的描述

可以通过如下命令即可获取到版本号

1
$ git reflog

此处输入图片的描述
通过上面的显示我们可以知道,增加内容 3333 的版本号是 6fcfc89.我们现在可以命令
git reset –hard 6fcfc89 来恢复了
此处输入图片的描述

  • 查看文件内容
1
$ cat xxx文件名

此处输入图片的描述

  • 可以丢弃工作区的修改
1
$ git checkout -- file

此处输入图片的描述

  • 删除文件命令
1
$ rm file

此处输入图片的描述
如上:一般情况下,可以直接在文件目录中把文件删了,或者使用如上 rm 命令:rm b.txt ,如果我想彻底从版本库中删掉了此文件的话,可以再执行 commit 命令 提交掉

只要没有commit之前,如果我想在版本库中恢复此文件如何操作呢?
可以使用如下命令 git checkout — b.txt,如下所示:

此处输入图片的描述

3. Git 修改用户名以及提交邮箱

  • git 修改当前的 project 的用户名的命令为:
1
$ git config user.name 你的目标用户名;
  • git 修改当前的 project 提交邮箱的命令为:
1
$ git config user.email 你的目标邮箱名;

如果你要修改当前全局的用户名和邮箱时,需要在上面的两条命令中添加一个参数,–global,代表的是全局。

命令分别为:

1
2
$ git config  --global user.name 你的目标用户名;
$ git config --global user.email 你的目标邮箱名;

当然,你还可以直接修改 git 的配置文件的方式来进行修改。

打开全局的.gitconfig 文件的命令为:

1
$ vi ~/.gitconfig;

然后在文件中直接修改即可.

打开当前 project 中的 config 文件,该文件在每个 project 中的.git 目录下,直接进入该目录进行编辑即可。当然,如果没有进行过修改的话,默认打开时没有对应的用户名和密码的。只有进行过修改之后,才会在 config 中产生对应字段

4. Git 本地仓库与 Github 远程仓库关联

如果你已经在本地创建了一个Git仓库,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,那就需要用到SSH Key,github拿到了你的公钥就会知道内容是你推送的

SSH Key 的配置:

  • Windows 下打开 Git Bash,创建 SSH Key,按提示输入密码,可以不填密码一路回车
1
$ ssh-keygen -t rsa -C "注册邮箱"
然后用户主目录/.ssh/下有两个文件,id_rsa是私钥,id_rsa.pub是公钥
  • 获取 key,打开.ssh 下的 id_rsa.pub 文件,里面的内容就是 key 的内容
1
$ start ~/.ssh/id_rsa.pub

测试 ssh key 是否成功,使用命令“ssh -T git@github.com”,如果出现 You’ve successfully
authenticated, but GitHub does not provide shell
access。这就表示已成功连上 github

  • 从远程克隆一份到本地可以通过 git clone
1
$ git clone git@github.com:tiger6/xxx.git
  • 本地库关联远程库,在本地仓库目录运行命令:
1
$ git remote add origin git@github.com:tiger6/xxx.git
  • 推送 master 分支的所有内容
1
$ git push -u origin master

第一次使用加上了-u 参数,是推送内容并关联分支。

推送成功后就可以看到远程和本地的内容一模一样,下次只要本地作了提交,就可以通过命令:

1
$ git push origin master

如果我们现在要推送到其他分支,比如 dev 分支上,我们还是那个命令 git

1
$ git push origin dev

把最新内容推送到 Github

  • 取回远程主机某个分支的更新(master 主分支)
1
$ git pull origin master
当你从远程库克隆时候,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且远程库的默认名称是origin。

要查看远程库的信息 使用

1
$ git remote

要查看远程库的详细信息 使用

1
$ git remote –v

此处输入图片的描述


  • 实战练习
    本地创建文本 test.txt,运行:
1
2
3
$ git add text.txt
$ git commit -m "添加新文件"
$ git push origin master

查看 github 是否同步


基本常用命令如下:

mkdir: XX (创建一个空目录 XX指目录名)
pwd: 显示当前目录的路径。
git init 把当前的目录变成可以管理的git仓库,生成隐藏.git文件。
git add XX 把xx文件添加到暂存区去。
git commit –m “XX” 提交文件 –m 后面的是注释。
git status 查看仓库状态
git diff XX 查看XX文件修改了那些内容
git log 查看历史记录
git reset –hard HEAD^ 或者 git reset –hard HEAD~ 回退到上一个版本
(如果想回退到100个版本,使用git reset –hard HEAD~100 )
cat XX 查看XX文件内容
git reflog 查看历史记录的版本号id
git checkout — XX 把XX文件在工作区的修改全部撤销。
git rm XX 删除XX文件
git remote add origin [https://github.com/tiger6/xxx
关联一个远程库
git remote rm origin 删除关联的远程库
git push –u(第一次要用-u 以后不需要) origin master 把当前master分支推送到远程库
git clone [https://github.com/tiger6/xxx
从远程库中克隆
git checkout –b dev 创建dev分支 并切换到dev分支上
git branch 查看当前所有的分支
git checkout master 切换回master分支
git merge dev 在当前的分支上合并dev分支
git branch –d dev 删除dev分支
git branch name 创建分支
git stash 把当前的工作隐藏起来 等以后恢复现场后继续工作
git stash list 查看所有被隐藏的文件列表
git stash apply 恢复被隐藏的文件,但是内容不删除
git stash drop 删除文件
git stash pop 恢复文件的同时 也删除文件
git remote 查看远程库的信息
git remote –v 查看远程库的详细信息
git push origin master Git会把master分支推送到远程库对应的远程分支上

×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. 什么是 Git
    1. 1.1. 1. Git 版本库
    2. 1.2. 2. Git 常用命令
    3. 1.3. 3. Git 修改用户名以及提交邮箱
    4. 1.4. 4. Git 本地仓库与 Github 远程仓库关联
,