git基础

git是分布式版本控制系统,svn是集中式版本管理系统

环境:centos7

ip:192.168.1.10

一、编译安装git

[root@wuchen ~]# yum install -y epel-release

[root@wuchen ~]# yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker

git源网址:https://github.com/git/git

[root@wuchen ~]# yum -y install wget

[root@wuchen ~]# wget https://codeload.github.com/git/git/zip/master

[root@wuchen ~]# yum -y install unzip

[root@wuchen ~]# unzip master

[root@wuchen ~]# cd git-master/

[root@wuchen git-master]# make prefix=/usr/local/git all

[root@wuchen git-master]# make prefix=/usr/local/git install

[root@wuchen git-master]# rm -rf /usr/bin/git

[root@wuchen git-master]# ln -s /usr/local/git/bin/git /usr/bin/git
[root@wuchen git-master]# git --version
git version 2.16.0-rc2

二、初始化仓库

[root@wuchen ~]# mkdir house

[root@wuchen ~]# cd house/

[root@wuchen house]# git init
Initialized empty Git repository in /root/house/.git/                     #将house初始化仓库

每次 Git 提交时都会引用这两条信息,说明是谁提交了更新,所以会随更新内容一起被永久纳入历史记录

[root@wuchen house]# git config --global user.email "1156858764@qq.com"     #邮箱
[root@wuchen house]# git config --global user.name "wuchen"                               #个人用户

三、常用操作

git add 加入暂存
git status 查看状态
git status -s 状态概览
git diff 尚未暂存的文件
git diff --staged 暂存区文件
git commit 提交更新
git reset 回滚
git rm 从版本库中移除
git rm --cached README 从暂存区中移除
git mv 相当于mv git rm git add 三个命令

四个区域:
远程仓库<-->本地仓库<-->暂存区域<-->工作目录
四种状态
Untracked、Unmodified、Modified、Staged
 Untracked(工作目录)-->git add -->Staged(暂存区)-->git commit版本-->Unmodified(本地仓库)-->Edit file-->Modified-->Stage the file-->Staged

添加文件:

[root@wuchen house]# echo "hello" >  test
[root@wuchen house]# git status
On branch master

No commits yet

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

test

nothing added to commit but untracked files present (use "git add" to track)        #使用git add添加文件

[root@wuchen house]# git add test                                                    #加入代码库

[root@wuchen house]# git status                                                         #现在处于暂存区
On branch master

No commits yet

Changes to be committed:
(use "git rm --cached <file>..." to unstage)

new file: test

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

[root@wuchen house]# git commit -m "first commit"                           #提交到本地仓库
[master (root-commit) f6bb8af] first commit
1 file changed, 1 insertion(+)                                                                                        #一个文件更改
create mode 100644 test

[root@wuchen house]# git status
On branch master
nothing to commit, working tree clean

[root@wuchen house]# git log
commit f6bb8af0789ef5bcff16d3024ce7326afec58d4d (HEAD -> master)                            #回滚需要的ID
Author: wuchen <1156858764@qq.com>
Date: Fri Jan 12 16:01:07 2018 +0800

first commit

[root@wuchen house]# echo "666666" >> test 
[root@wuchen house]# cat test
hello
666666
[root@wuchen house]# git status
On branch master
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: test

no changes added to commit (use "git add" and/or "git commit -a")

[root@wuchen house]# git add test 
[root@wuchen house]# git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

modified: test

[root@wuchen house]# git commit -m "add 666666"
[master ee2fc42] add 666666
1 file changed, 1 insertion(+)
[root@wuchen house]# git log
commit ee2fc4293a6f716bfb4c1545246a57e6ee6aacf5 (HEAD -> master)
Author: wuchen <1156858764@qq.com>
Date: Fri Jan 12 16:39:30 2018 +0800

add 666666

commit f6bb8af0789ef5bcff16d3024ce7326afec58d4d
Author: wuchen <1156858764@qq.com>
Date: Fri Jan 12 16:01:07 2018 +0800

first commit

版本回退:

git log命令显示从最近到最远的提交日志,我们可以看到3次提交,最近的一次是append GPL,上一次是add distributed,最早的一次是wrote a readme file
如果嫌输出信息太多,看得眼花缭乱的,可以试试加上
--pretty=oneline参数:

[root@wuchen house]# git log --pretty=oneline
ee2fc4293a6f716bfb4c1545246a57e6ee6aacf5 (HEAD -> master) add 666666
f6bb8af0789ef5bcff16d3024ce7326afec58d4d first commit

Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交3628164...882e1e0(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

 

[root@wuchen house]# git reset --hard HEAD^      
HEAD is now at f6bb8af first commit

[root@wuchen house]# cat test
hello

[root@wuchen house]# git log
commit f6bb8af0789ef5bcff16d3024ce7326afec58d4d (HEAD -> master)
Author: wuchen <1156858764@qq.com>
Date: Fri Jan 12 16:01:07 2018 +0800

first commit

删除文件:

[root@wuchen house]# rm -rf test 
[root@wuchen house]# git status
On branch 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: test

no changes added to commit (use "git add" and/or "git commit -a")

现在你有两个选择,一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit:

另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:

[root@wuchen house]# git checkout -- test
[root@wuchen house]# ls
test
[root@wuchen house]# git status
On branch master
nothing to commit, working tree clean

分支管理:

查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>

[root@wuchen house]# git checkout -b dev                             #创建分支dev并且切换到分支相当于下面

or

#git branch dev

#git checkout dev

[root@wuchen house]# git branch                                            #查看分支
* dev
master

[root@wuchen house]# git status
On branch dev                                                                              #目前所在分支
nothing to commit, working tree clean

[root@wuchen house]# echo "dasdas" >> test 
[root@wuchen house]# git add test 
[root@wuchen house]# git commit -m "branch test"
[dev 7b31162] branch test
1 file changed, 1 insertion(+)

[root@wuchen house]# git checkout master                             #切换到主干
Switched to branch 'master'

[root@wuchen house]# cat test                                            #你会发现刚才添加的文件并没有添加上,因为是在dev分支添加的
hello
PS1='\[\e[37;40m\][\[\e[32;40m\]\u\[\e[37;40m\]@\h \t \[\e[35;40m\]\W\[\e[0m\]]\$ '
dasdad
1213123
dsadad
13213123
04-23094023420

[root@wuchen house]# git merge dev                                  #合并分支
Updating e1b2eb3..7b31162
Fast-forward
test | 1 +
1 file changed, 1 insertion(+)

[root@wuchen house]# cat test
hello
PS1='\[\e[37;40m\][\[\e[32;40m\]\u\[\e[37;40m\]@\h \t \[\e[35;40m\]\W\[\e[0m\]]\$ '
dasdad
1213123
dsadad
13213123
04-23094023420
dasdas

[root@wuchen house]# git branch -d dev                                   #事情做完了,就可以删除分支了
Deleted branch dev (was 7b31162).
[root@wuchen house]# git branch
* master

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值