git使用详解

一:本文介绍git的使用方法

1.1:安装即获取帮助:

1.1.1:安装:

yum install git -y

1.1.2:获取帮助:

git –help

The most commonly used git commands are: add Add file contents to the index bisect Find by binary search the change that introduced a bug branch List, create, or delete branches checkout Checkout a branch or paths to the working tree clone Clone a repository into a new directory commit Record changes to the repository diff Show changes between commits, commit and working tree, etc fetch Download objects and refs from another repository grep Print lines matching a pattern init Create an empty Git repository or reinitialize an existing one log Show commit logs merge Join two or more development histories together mv Move or rename a file, a directory, or a symlink pull Fetch from and merge with another repository or a local branch push Update remote refs along with associated objects rebase Forward-port local commits to the updated upstream head reset Reset current HEAD to the specified state rm Remove files from the working tree and from the index show Show various types of objects status Show the working tree status tag Create, list, delete or verify a tag object signed with GPG 1.1.3:设置全局用户名和邮件地址:

git config –global user.name zhangjie

git config –global user.email 1669121886@qq.com

[root@saltmaster ~]# git config –global –list #获取全局设置 user.name=zhangjie user.email=1669121886@qq.com

git config –global –help #使用帮助

1.1.4:初始化一个空的git仓库

#git init #当前目录初始化一个空的git仓库

Initialized empty Git repository in /root/web/.git/ 1.1.5:创建一个文件并提交:

echo “git test” > readme.txt

git status

On branch master

Initial commit

Untracked files:

(use "git add <file>..." to include in what will be committed)

readme.txt

nothing added to commit but untracked files present (use "git add" to track)

git add readme.txt #添加到暂存区

git status #查看工作区的当前状态

On branch master

Initial commit

Changes to be committed:

(use "git rm --cached <file>..." to unstage)

new file: readme.txt

git commit -m “text git” #-m是提交说明

[master (root-commit) e90e767] text git #主分支以root提交 1 file changed, 1 insertion(+) #一个文件更改 create mode 100644 readme.txt #权限644

git log #查看操作日志

commit 04910a72bed1101423655dd9b5535d6447dfbea7 Author: zhangjie 1669121886@qq.com #提交人和邮箱 Date: Wed Aug 17 16:51:08 2016 -0400 #提交日期

index.html #提价的文件

commit e90e7673c2bdfd6892f44e78eb47f9ceb6cba66a Author: zhangjie 1669121886@qq.com Date: Wed Aug 17 16:45:03 2016 -0400

text git

echo “123” > index.html

git diff index.html

diff --git a/index.html b/index.html index 9015a7a..190a180 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -index #删除的行 +123 #添加的行 1.1.7:git的版本回退:

git reset –hard HEAD^ #HEAD为当前版本,后面加一个^是当前版本的上一个版本,加两个^^回退带上上一个版本,加三个^^^是上上上一个版本,以此类推

HEAD is now at 04910a7 index.html 1.1.8:回退到指定的版本:

git reflog #获取每次提交的ID,可以使用–hard根据提交的ID进行版本回退

04910a7 HEAD@{0}: reset: moving to HEAD^ 193d182 HEAD@{1}: commit: xx 04910a7 HEAD@{2}: commit: index.html e90e767 HEAD@{3}: commit (initial): text git

git reset –hard 193d182

HEAD is now at 193d182 xx

cat index.html

123 1.1.9:创建并切换到一个分支:

git branch #查看当前的分支

git branch dev

git checkout dev #切换到dev分支

Switched to branch 'dev'

echo "dev" > index.html #创建一个你文件

git add index.html #添加到分支暂存区

git commit -m "dev comm" #提交到dev分支本地服务器

[dev 8ebd5ff] dev comm 1 file changed, 1 insertion(+), 1 deletion(-) [root@saltmaster ~/web]# ll #查看当前分支的文件,分支会集成master的数据 total 20 -rw-r--r-- 1 root root 4 Aug 17 22:39 index.html -rw-r--r-- 1 root root 11357 Aug 17 21:59 LICENSE -rw-r--r-- 1 root root 27 Aug 17 21:08 readme.txt 1.1.10:分支合并,首先切换到master分支:

[root@saltmaster ~/web]# git branch #当前是主分支 dev

  • master [root@saltmaster ~/web]# echo "masetr" > index.html #写一个master的文件 [root@saltmaster ~/web]# git add index.html #添加到本地暂存区 [root@saltmaster ~/web]# git commit -m "master" #提交到本地服务器 [master cdebc62] master 1 file changed, 1 insertion(+), 1 deletion(-) [root@saltmaster ~/web]# git checkout dev #切换到dev分支 Switched to branch 'dev' [root@saltmaster ~/web]# echo "dev dev dev dev" > index.php #创建一个文件 [root@saltmaster ~/web]# git add index.php [root@saltmaster ~/web]# git commit -m "dev" [dev debcd1c] dev 1 file changed, 1 insertion(+) create mode 100644 index.php [root@saltmaster ~/web]# git checkout master #切换到mster分支,合并要在master端进行 [root@saltmaster ~/web]# git merge dev #合并dev分支 Merge made by the 'recursive' strategy. index.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) [root@saltmaster ~/web]# cat index.php #合并后的内容 dev1 dev1 dev1 dev1 1.1.11:推送分支到服务器:

[root@saltmaster ~/web]# git branch #查看当前所在的分支 dev

  • master [root@saltmaster ~/web]# git tag v1.2 #打一个标签 [root@saltmaster ~/web]# git tag #查看当前所有的标签 v1.2

git push origin dev

[root@saltmaster ~/web]# git push origin dev Counting objects: 14, done. Delta compression using up to 2 threads. Compressing objects: 100% (9/9), done. Writing objects: 100% (12/12), 1001 bytes | 0 bytes/s, done. Total 12 (delta 4), reused 0 (delta 0) remote: Resolving deltas: 100% (4/4), done. To git@github.com:zhangshijle/demo.git

  • [new branch] dev -> dev 1.1.12:打标签,在版本发布不频繁的时候每次发布就打一个tag,生成环境直接checkout这个tag即可,如果发布频繁就使用版本号:

[root@saltmaster ~/web]# git tag v1.2 #打一个标签 [root@saltmaster ~/web]# git tag #查看所有标签 v1.2 [root@saltmaster ~/web]# vim readme.txt #代码变更 [root@saltmaster ~/web]# git add * #添加所有 [root@saltmaster ~/web]# git commit -m "x" #提交信息 [master d0712e5] x 1 file changed, 3 insertions(+) [root@saltmaster ~/web]# git tag v1.3 #提交之后打标签 [root@saltmaster ~/web]# git tag #查看所有的标签 v1.2 v1.3 1.1.13:查看tag提交的说明:

[root@saltmaster ~/web]# git show v1.3 commit d0712e5bc70068e998475f1337e42adefd52f4f0 #这就是版本号 Author: zhangjie 1669121886@qq.com Date: Wed Aug 17 23:17:49 2016 -0400 x diff --git a/readme.txt b/readme.txt index bd143a6..15abcd5 100644 --- a/readme.txt +++ b/readme.txt @@ -1,3 +1,6 @@ git test git test git test +git test +git test +git test 1.1.14:推送指定版本的代码 git push:

[root@saltmaster ~/web]# git push origin v1.2 #推送指定版本到git服务器 Counting objects: 11, done. Delta compression using up to 2 threads. Compressing objects: 100% (6/6), done. Writing objects: 100% (7/7), 721 bytes | 0 bytes/s, done. Total 7 (delta 3), reused 0 (delta 0) remote: Resolving deltas: 100% (3/3), completed with 2 local objects. To git@github.com:zhangshijle/demo.git

  • [new tag] v1.2 -> v1.2 1.1.15:从git服务器获取指定版本号的代码到本地git服务器,常用语代码回滚:

[root@saltmaster ~/web]# git checkout v1.3 #回滚到指定版本的代码 M index.php Previous HEAD position was 345dbd6... Merge branch 'dev' HEAD is now at d0712e5... x 1.1.16:忽略文件:

[root@saltmaster ~/web]# cat .gitignore #忽略的文件定义在此文件内 1.1.17:命令总结:

git add index.html #添加到暂存区 git status #查看状态 git commit -m "xx" 提交 git log #查看提交日志 git reset --hard HEAD^ 回退到是上一个版本 git reflog 查看历史提交信息 git reset --hard xxxxx #根据提交ID回退 1.2:什么是暂存区和工作区?

工作区就是编辑文件的目录区域,需要将工作区的修改好的文件add到咱存区才能提交到git服务器,在工作区有多个文件的时候可以将一个或多个文件添加至暂存区提交到git服务器即可。

1.3:git checkout 从版本库已经提交的内容重新拉取一个文件,用户临时测试本地git配置文件的内容,测试完成之后再从git服务器获取此文件的场景,用法如下:

[root@saltmaster ~/web]# cat index.html #当前内容 123 123 [root@saltmaster ~/web]# echo abc >> index.html #添加一些内容 [root@saltmaster ~/web]# cat index.html #添加之后的内容,现在需要重新从git获取此文件 123 123 abc [root@saltmaster ~/web]# git checkout -- index.html #文件前面有两个短横线,表示重新从git服务器获取此文件,即以git服务器中的文件内容为准,如果直接提交的话就把git服务器的文件覆盖了 [root@saltmaster ~/web]# cat index.html 123 123 abc