Git菜鸟教程

Git是目前世界上最先进的分布式版本控制系统(没有之一)
在RHEL上安装Git

[root@foundation62 ~]# yum install -y git

创建版本库

版本库又名仓库,英文名repository,可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以还原

[root@foundation62 ~]# mkdir demo
[root@foundation62 demo]# git init #进行初始化,需要在仓库目录中
Initialized empty Git repository in /root/demo/.git/
[root@foundation62 demo]# ls -a
.  ..   .git 

可以发现当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了


用户信息

当安装完 Git 应该做的第一件事就是设置你的用户名称与邮件地址。
每一个 Git 的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改

[root@foundation62 demo]# git config --global user.name kobe
[root@foundation62 demo]# git config --global user.email mamba@lakers.org
[root@foundation62 demo]# echo westos > readme.md

用命令git add告诉Git,把文件添加到仓库

[root@foundation62 demo]# git  add readme.md 
[root@foundation62 demo]# git status -s
A  readme.md

用命令git commit告诉Git,把文件提交到仓库
git commit命令,-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录

[root@foundation62 demo]# git commit -m "add  readme.md"
[master (root-commit) 06003f5] add  readme.md
1 files changed, 2 insertions(+)
 create mode 100644 readme.md
[root@foundation62 ~]# cat .gitconfig 
[user]
    name = kobe
    email = mamba@lakers.org

状态简览

git status 命令的输出十分详细,但其用语有些繁琐。 如果你使用 git status -s 命令或 git status --short 命令,你将得到一种更为紧凑的格式输出。 运行 git status -s ,状态报告输出如下:

[root@foundation62 demo]# git status -s
 M README
MM Rakefile
A  lib/git.rb
M  lib/simplegit.rb
?? LICENSE.txt

新添加的未跟踪文件前面有 ?? 标记,新添加到暂存区中的文件前面有 A 标记,修改过的文件前面有 M 标记。 M 有两个可以出现的位置,出现在右边的 M 表示该文件被修改了但是还没放入暂存区,出现在靠左边的 M 表示该文件被修改了并放入了暂存区

忽略文件

有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。 通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。 在这种情况下,我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式

星号(*)匹配零个或多个任意字符;[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个
c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9]
表示匹配所有 0 到 9 的数字)。 使用两个星号(*) 表示匹配任意中间目录,比如a/**/z 可以匹配 a/z, a/b/z 或
a/b/c/z

[root@foundation62 demo]# touch .file1
[root@foundation62 demo]# git status -s
?? .file1

此时编写.gitignore文件

[root@foundation62 .git]# cat .gitignore 
.*
[root@foundation62 demo]# git status -s
# 无任何输出

工作区和暂存区

工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
这里写图片描述
第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;

第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

撤销修改

在readme.md中多添加了几行内容:

[root@foundation62 demo]# cat readme.md 
westos
westos
westos
westos
westos

这里写图片描述

[root@foundation62 demo]# git checkout -- readme.md 
[root@foundation62 demo]# cat  readme.md 
westos
# 再次查看已经复原

命令git checkout -- readme.md意思就是,把文件在工作区的修改全部撤销,这里有两种情况:

一种是readme.md自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

一种是readme.md已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

总之,就是让这个文件回到最近一次git commitgit add时的状态。


假设在readme.md中写入了内容且git add到暂存区

[root@foundation62 demo]# cat readme.md 
westos
Hello World ! ! !
[root@foundation62 demo]# git  add readme.md

这里写图片描述
用命令git reset HEAD <file>可以把暂存区的修改撤销掉(unstage),重新放回工作区

[root@foundation62 demo]# git  reset HEAD  readme.md 
Unstaged changes after reset:
M   readme.md
# 再执行git checkout -- readme.txt 恢复源文件

已经commit的情况

[root@foundation62 demo]# git  add readme.md 
[root@foundation62 demo]# git commit -m "add readme.md"
[master ec57fd8] add readme.md
 1 file changed, 1 insertion(+)
# 表示返回至上一步
[root@foundation62 demo]# git reset --hard HEAD^
HEAD is now at ce2420d add readme.md
[root@foundation62 demo]# cat readme.md 
westos

也可以通过reflog查看

[root@foundation62 demo]# git  reflog
ce2420d HEAD@{0}: reset: moving to HEAD^
ec57fd8 HEAD@{1}: commit: add readme.md
ce2420d HEAD@{2}: commit (initial): add readme.md
# 想要返回至哪个状态,就在后面执行 git reset --hard  + ID号码

GitHub代码管理

这里写图片描述
这里写图片描述
这里写图片描述

#与github连接并上传
[root@foundation62 demo]# git remote add origin git@github.com:xupt7090/demo.git
[root@foundation62 demo]# git push -u origin master

这里写图片描述

上传成功
这里写图片描述
从github上拉取代码

[root@foundation62 demo]# git  pull origin

猜你喜欢

转载自blog.csdn.net/weixin_41476978/article/details/82014117