GIT 版本控制系统

git安装(在linux上安装git)

1.测试git是否安装

> git

2.若没有安装则使用以下命令来安装

>sudo apt-get install git
#邮箱配置
git config -global user.name "yourname"
git config -global user.email "youremail@emial.com"
版本管理库

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

1.选择一个合适的地方创建一个空目录:

> mkdir gitdemo
> cd gitdemo
> pwd

2.通过git init命令把这个目录变成git可以管理的仓库

>git init

现在仓库以及创建完毕,并且是一个空的仓库,在这个目录下多了一个.git目录【不要手动修改此目录】

3.创建一个文件,demo1.txt

> echo "hello world!" > demo1.txt

注意:一定要将此文件放在gitdemo的目录下或者其子目录下

4.使用git add,使文件添加到仓库缓暂存区

>git add demo1.txt

5.使用命令git commit将文件提交到仓库

>git commit -m "add hello"
#在此命令中-m后面表示的是本次提交的时候的说明,为了以后方便找到改动记录

注意:我们可以一次性提交多个文件

git版本管理

#####修改内容

1.现在我更改了demo1.txt的内容

>echo "good" >> demo1.txt

2.使用git status可以查看结果

> git status

注意:git status命令可以让我们时刻掌握仓库的当前状态。

3.git diff 文件

> git diff demo1.txt

注意:此命令可以查看文件不同【工作区中的文件与暂存区的文件的不同】【文件修改了哪些地方都会高亮起来】

4.提交修改

> git add demo1.txt

5.在执行commit之前查看仓库状态

> git status

6.提交文件

> git commit -m "add good"

7.提交之后查看仓库状态

> git status
版本回退

1.使用git log查看历史纪录

> git log

git log会显示从最近到最远的提交日志,若输出的信息太多则可以添加以下参数:

>git log --pretty=oneline

注意:在这里会显示类似1093ab…之类的是commit id(版本号),每提交一个版本则会生成一个版本号【版本号都不相同】

2.回退到上一个版本

> git reset --hard HEAD^

3.查看demo1.txt

>cat demo1.txt

4.查看现在版本的状态

> git log

注意:最新版本已经不见了,则证明你已经穿越成功!

回退回去

> git reset --hard 版本号

注意:这个版本号就是你要回退回去的版本号,只需要写前面几位即可。

git reflog记录你的每一次命令

>git reflog
工作区与暂存区
工作区

在电脑里能够看到的目录,比如gitdemo文件夹就是一个工作区

版本库

在工作区中有一个隐藏的目录.git,此目录为版本库.

暂存区

在版本库中存放了很多东西,其中最重要的就是成为stage的暂存区。还有git给我创建的一个master分支,以及指向master的指针head。

注意:我们提交文件的时候分为两部:

1.git add 此方法是将工作区中的内容提交到暂存区

2.git commit 则是将暂存区的内容提交到当前分支

因为在我们创建git版本库的时候,git自动的为我们创建一个master分支,所以我们现在所有的更改都是在master分支上进行的。

撤销修改

1.使用git checkout --file可以丢弃工作区的修改

> git checkout -- demo1.txt

注意:这里有两种情况:

1.demo1.txt修改后还没放到暂存区,撤销修改则回到与版本库一模一样的状态

2.demo1.txt已经添加放到了暂存区,在暂存区又做了修改,则撤销之后就会回到添加暂存区后一样的状态

总结:此命令可将文件回到最近一次git commit或者git add时候的状态。

注意:此命令中的–非常重要,必须添加,否则就变成了切换到另外一个分支的命令。

文件删除

1.提交一个文件到git仓库

> git add test.txt
> git commit -m "add test.txt"

2.在工作区删除此文件【此文件没用】

> rm test.txt

3.当工作区与版本库不同的时候,git status则会显示不同

> git status

4.删除此文件你有两个选择

1》从版本库中直接删除该文件

> git rm test.txt

2》使用撤销修改的操作

> git checkout -- test.txt

1.当文件处于工作区的时候,我们撤销修改

git checkout  --  file

2.当文件处于暂存区的时候,我们要撤销修改

git  reset   HEAD file

3.当文件已经提交到仓库的时候,我们要删除文件

git  rm  file

分支管理

创建与合并分支

1.首先,我们创建dev分支,然后切换到dev分支:

git checkout -b dev

git checkout命令加上-b参数表示创建并切换,相当于以下两条命令

 git branch dev
 git checkout dev

2.用git branch命令查看当前分支:

git branch
* dev

3.创建一个新的文件

> echo "you are a good man!" > demo.txt
> git commit -m "branch test"

4.dev分支的工作完成,切换为master分支

> git checkout master

5.把dev分支的工作成果合并到master分支上

> git merge dev

6.合并完成后,就可以放心地删除dev分支了

> git branch -d dev
解决冲突

1.准备新的feature1分支,继续我们的新分支开发

> git checkout -b feature1

2.创建一个新的文件

> echo "hello world!" > new.txt
  1. 在feature1分支上提交
> git add new.txt
> git commit -m "and simple"
  1. 切换到master分支
> git checkout master
  1. 在master分支将new.txt追加:
> echo "hello  worlds!" > new.txt
  1. 提交文件
> git add new.txt
> git commit -m "add new"
  1. 合并代码
> git merge feature1

git 告诉我们,new.txt文件存在冲突,必须手动解决后才能 提交。

  1. 使用git status也可以告诉我们冲突文件
> git status
  1. 我们可以直接查看readme.txt的内容 ,Git用<<<<<<<=======>>>>>>>标记出不同分支的内容 .我们修改如下后保存:
"hello world!"

10.重新提交:

> git add new.txt
> git commit -m "fixed"
  1. 最后删除feature1分支
> git branch -d feature1

git log --graph命令可以看到分支合并图。

添加一个新功能时,你肯定不希望因为一些实验性质的代码,把主分支搞乱了,所以,每添加一个新功能,最好新建一个feature分支,在上面开发,完成后,合并,最后,删除该feature分支

推送分支

推送分支,就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上:

 git push origin master

如果要推送其他分支,比如dev,就改成:

 git push origin dev

但是,并不是一定要把本地分支往远程推送,那么,哪些分支需要推送,哪些不需要呢?

  • master分支是主分支,因此要时刻与远程同步;
  • dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;
  • bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;
  • feature分支【功能分支】是否推到远程,取决于你是否和你的小伙伴合作在上面开发。
标签管理

发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。

#####创建标签

Git中打标签非常简单,首先,切换到需要打标签的分支上:

git branch
* dev
  master
git checkout master
Switched to branch 'master'

然后,敲命令git tag <name>就可以打一个新标签:

 git tag v1.0

可以用命令git tag查看所有标签:

git tag
v1.0

add merge这次提交打标签,它对应的commit id是f52c633,敲入命令:

git tag v0.9 f52c633

再用命令git tag查看标签:

git tag

还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字:

git tag -a v0.1 -m "version 0.1 released" 1094adb

用命令git show <tagname>可以看到说明文字:

git show v0.1

#####操作标签

如果标签打错了,也可以删除:

git tag -d v0.1

如果要推送某个标签到远程,使用命令git push origin <tagname>

git push origin v1.0

一次性推送全部尚未推送到远程的本地标签:

git push origin --tags

搭建git服务器

1.安装git

sudo apt-get install git

2.创建一个git用户,用来运行git服务:

sudo adduser git

3.创建证书登录:

收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。

4.初始化Git仓库:

先选定一个目录作为Git仓库,假定是/srv/sample.git,在/srv目录下输入命令:

sudo git init --bare sample.git

Git就会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。然后,把owner改为git

修改目录的所有者与所属组

$ sudo chown -R git:git sample.git

5.禁用shell登录:

出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:

git:x:1001:1001:,,,:/home/git:/bin/bash

改为:

git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。

6.克隆远程仓库:

现在,可以通过git clone命令克隆远程仓库了,在各自的电脑上运行:

#server :服务器IP地址   git仓库地址
git clone git@server:/srv/sample.git

7.上传文件到服务器

git remote add origin git@server:/srv/sample.git
git push origin master
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值