Git 仓库的创建和常用命令的使用

原创 2016年03月25日 17:30:26
Git是一款免费、开源的分布式版本控制系统

更多理论知识请查看官方中文文档 https://git-scm.com/book/zh/v2/


一、安装

linux:直接 yum install git

windows:下载 Git2.5.2-64,点击安装


二、创建本地仓库

打开 git-bash,f:\test 目录可以是空目录也可以是已存在项目的目录

git> cd f:\test
git> git init

配置全局参数(将 name 和 email@email.com 改成你自己的名称和emall)

git> git config --global user.name "name"
git> git config --global user.email "email@example.com"

生成密钥和公钥(等会要用)

git> ssh-keygen -t rsa -C "email@example.com"

一直回车,若你不想在使用密钥时输入口令,将其留空即可

会在用户主目录下(C:\Users\用户\.ssh)生成一个 .ssh 的目录,


此时,你就可以使用git了,更改,提交等等操作,但是这些操作都是在本地的


三、创建远程仓库

远程仓库在linux 下,ip 为 192.168.1.136

假设已安装了 Git

创建管理运行git 的用户

adduser git

此时会生成目录 /home/git 若没有请自行创建

这里创建一个叫 test.git 的仓库(一般裸仓库以.git结尾),--bare 为裸仓库,不存放原文文件

cd /home/git
git init --bare test.git
chown -R git:git /home/git/
禁止 git 用户 ssh 登录

vim /etc/passwd

git:x:505:505::/home/git:/usr/bin/git-shell

保存并退出


创建ssh 验证文件

mkdir /home/git/.ssh/
ls -ahl
vim /home/git/.ssh/authorized_keys
将刚才生成的公钥(C:\Users\用户\.ssh\id_rsa.pub)里面的内容,复制到authorized_keys,若是以后有其他人加入,就一行一个

你也可以用ftp下载authorized_keys文件,修改后再上传上去


此时,远程仓库就创建好了


四、常用命令使用

继续使用刚才打开的 git-bash,现在我们默认是在master分支


● 添加远程仓库(就是刚才建立的裸仓库)

git remote add [远程仓库别名] [远程仓库地址]

git> git remote add test.git git@192.168.1.136:/home/git/test.git

查看远程仓库
-v 显示出远程链接

git> git remote -v
test.git        git@192.168.1.136:/home/git/test.git (fetch)
test.git        git@192.168.1.136:/home/git/test.git (push)

查看更多的远程仓库信息
git> git remote show test.git

远程仓库重命名
git remote rename [旧名] [新名]

git> git remote rename test.git newtest.git
git remote 查看一下


远程仓库移除

git> git remote rm newtest.git


现在你就可以用 test.git 这个别名来做拉取和推送等和远程仓库相关的操作了

在 test 文件夹下 添加一个 test.txt 的文件,并写入一行 ‘master’


● 提交你的更改

# 缓存更改(可多次执行)
git> git add .
# 提交更改 -m '描述' ,描述一下这个分支都干了些啥(很有用处)
git> git commit -m 'create master'
# 推送到远程仓库(这样别人才能看见你的更改,当然他要先拉取一下)
# git push [远程仓库别名] [要推送的本地分支名]
git> git push test.git master

现在远程仓库就有一个基础版本了,别人加入你的项目时,他只需要 git clone [远程仓库名]  就行了


● 创建、查看、切换、删除分支

创建一个 test 分支并切换到 test 分支
git checkout -b [新分支名称] ;checkout 是切换,-b 是创建

git> git checkout -b test
也可以使用 branch 创建

git> git branch test1

查看分支列表

-v 查看每个分支最后一次提交的信息

git> git branch -v
  master      38b7597 create master
* test        69331a3
  test1       dcf3841

* 代表现在所在的那一个分支


切换分支

git> git checkout test

删除分支

-d 是删除;若是有改动,会删除失败,试试 -D 吧,但不建议这么做

git> git branch -d test1


● 查看更改

改动 test.txt 的内容,添加一行 ‘add test’(在git bash 中可以直接用 vim 操作 test.txt  哦,和linux下操作一样)

看看都改动了哪些文件

git> git status

看看 test.txt 改动的内容

git> git diff test.txt
查看完毕后就可以提交更改了


● 拉取分支

pull 会自动合并

git pull [远程仓库里别名] [分支名称]

git> git pull test.git master

若不想直接合并,使用 fetch

git fetch [远程仓库里别名] [分支名称]

git> git fetch test.git test
它会拉取远程仓库的 test 分支到本地,你可以查看改动后,手动合并

● 合并分支

使用场景:
1、本地仓库有多个个分支,合并到一个分支,推送合并的那个分支到远程仓库即可
2、多个人同时在一个分支下工作,你在此分支上的工作完成后,要先从远程仓库拉取新的改动,合并后再推送到远程仓库

创建两个测试分支

git> git checkout -b test_merge
# 在 test.txt 中添加一行 test maerge 1 (记住行号,比如第三行) ,提交更改
git> git add .
git> git commit -m 'test merge'
# 创建另一个分支 ,并添加一行 ,将上个分支添加的那一行(第三行)更改为 new test maerge 1,并新添一行 test maerge 2 
git> git checkout master
git> git checkout -b test_merge1
git> git add .
git> git commit -m 'test merge1'
# 切换到 test_merge 进行合并
git> git checkout test_merge
git> git merge test_merge1

若是合并远程仓库的分支,要先 fetch 更新到本地,再合并,这里演示合并远程的 test 分支

git> git fetch test.git test
git> git merge test.git/test

自动合并时报错,有冲突,test.txt 的内容为

master

<<<<<<< HEAD
test maerge 1
=======
new test maerge 1

test maerge 2 
>>>>>>> test_merge1

HEAD 表示当前分支的数据
======= 到 test_merge1 里面的内容是 test_merge1 分支添加的内容
这时就要手动更改了,改为如下
master

test maerge 1
new test maerge 1

test maerge 2 
改完后要重新提交
git> git add .
git> git commit -m 'fix conflict'
git> git push test.git test_merge

● 回退

创建一个 test_reset 分支,更改 test.txt 文件三次并提交三次

git> git checkout -b test_reset
# 第一次提交 test.txt 里面的内容改为 reset 1
git> git add .
git> git commit -m 'reset 1'
# 第二次提交 test.txt 里面的内容改为 reset 2
git> git add .
git> git commit -m 'reset 2'
# 第三次提交 test.txt 里面的内容改为 reset 3
git> git add .
git> git commit -m 'reset 3'

是用 git log 查看日志

--pretty 显示格式,也可以是 --oneline
--abbrev-commit 仅显示SHA-1的前几个字符(已是唯一),而非所有的40个字符

git> git log --pretty=oneline --abbrev-commit
a415c64 reset 3
a2c427a reset 2
150a66e reset 1

前7个字符就是我们每次提交的 commit id,它是唯一的(其实是有40位,不过7位就足够了);后面是提交时的描述,这时描述就起作用了,现在可以回退到任意提交点

回退到 reset 1 查看一下 test.txt 里面的内容(内容为: reset 1)

git> git reset --hard 150a66e
也可以执行 git reset --hard 回退到最近一次的提交点

看看我们刚才都执行了哪些操作

git> git reflog
150a66e HEAD@{0}: reset: moving to 150a66e
a415c64 HEAD@{1}: commit: reset 3
a2c427a HEAD@{2}: commit: reset 2
150a66e HEAD@{3}: commit: reset 1
...

可以看出,我们回退,并没有生成新的 commit id ,只是将 HEAD 指向了原来的commit id
HEAD 是一个指向当前分支的指针,可以理解成这是 git 内部对当前分支的别名
可以使用如下命令查看 HEAD 指向

git> git log --oneline --decorate
39c412f (HEAD -> test_merge) fix confict test
40b9fc8 (test.git/test_merge) fix conflict
dcf3841 (test_merge1) test maerge1
6a67864 test merge
69331a3 (test.git/test, test) update test.txt
38b7597 (test.git/master, master) create master

● git log 图形查看提交历史、各个分支的指向以及项目的分支分叉情况

git> git log --oneline --decorate --graph --all
* 2e31daa (test_reset) test
* 150a66e reset 1
| *   39c412f (HEAD -> test_merge, tag: v1.0.1) fix confict test
| |\
| | * 69331a3 (test.git/test, test) update test.txt
| |/
|/|
| *   40b9fc8 (test.git/test_merge) fix conflict
| |\
| | * dcf3841 (test_merge1) test maerge1
| |/
|/|
| * 6a67864 test merge
|/
* 38b7597 (test.git/master, master) create master

● 标签的创建、查看、删除

创建(轻量标签)

git> git tag v1.0.0

针对某一提交打标签

# git tag -a [指定标签名] -m [指定描述] [提交的唯一id]
git> git tag -a v1.0.1 -m "version 1.0.1" 39c412f
这种也叫 附注标签,会记录打标签者的信息、打标签的日期时间、附注信息,然后显示具体的提交信息

轻量标签本质上是将提交校验和存储到一个文件中 - 没有保存任何其他信息

查看标签

查看某一系列标签

git> git tag -l 'v1*'


查看标签的详细信息

git> git show v1.0.1


推送到远程仓库

git> git push test.git v1.0.1

推送所有标签

git> git push test.git --tags

删除标签

git> git tag -d v1.0.0

删除远程仓库的标签

git> git push test.git :refs/tags/v1.0.1

● 换行模式

windows 使用回车和换行两个字符来结束一行 CRLF
Linux 只使用换行一个字符 LF
若add 时出现类似这样的错误
fatal: LF would be replaced by CRLF
fatal: CRLF would be replaced by LF
尝试打开或关闭 autocrlf 来解决

git> git config --global core.autocrlf [true|false]


● 打包两提交点之间的变更文件,并归档

git archive -o [归档文件名] HEAD $(git diff --name-only [开始点] [结束点])
-o --output

git diff --name-only [开始点] [结束点] ;显示两点之间更改过的文件名

git> git archive -o latest.zip HEAD $(git diff --name-only 38b7597 2e31daa)


五、Git 图形化管理工具

为了提高工作效率,图形化的管理工具也是必不可少的,当然,git命令烂熟于心的同学也不见得效率有多低

虽然git 有提供一个简单的 Git GUI,但是不怎么好用啊,还丑...

这里有各种各样免费的图形化管理工具

https://git-scm.com/downloads/guis


这里介绍一下我用的这个吧 SourceTree

可在这里免费下载 SourceTree1.5

安装好后,只需注册一下,就可免费使用,界面清爽,改动一目了然

界面如下


版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jam00/article/details/50982424

git基础教程

Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理,在工作以及日常开发中Git是程序员协同开发必备知识。
  • 2017年03月06日 09:58

创建和使用 git 仓库

实验说明本节实验为 Git 入门第一个实验,可以帮助大家熟悉如何创建和使用 git 仓库。...
  • jiaoyaning1210
  • jiaoyaning1210
  • 2016-04-12 11:04:52
  • 8504

Git学习-本地版本库的创建与简单操作

在D盘的根目录下创建一个gittest的文件夹(位置随意,完全凭自己的喜好),这是一个空的文件夹,刚创建完为下图这样子 有以下两种方式创建本地版本库:、         1.打开命令窗口进...
  • long290046464
  • long290046464
  • 2016-11-19 13:06:13
  • 4081

git创建仓库,并提交代码(第一次创建并提交)

一直想学GIT,一直不曾学会。主要是GUI界面的很少,命令行大多记不住。今天尝试提交代码,按GIT上给的方法,没料到既然提交成功了。 于是把它记下来,方便以后学习。 代码是学习用的,没多大意义; ...
  • kazeik
  • kazeik
  • 2013-06-17 17:21:37
  • 97914

Git入门指南一:基本介绍和创建Git仓库

Git入门指南 作者:毕小朋 博客:http://blog.csdn.net/wirelessqa  声明:本文参考网上的很多优秀的教程,感谢互联网的分享精神! 一. Git基本介绍 1.1 ...
  • wirelessqa
  • wirelessqa
  • 2014-02-19 19:43:12
  • 29562

git创建一个自己的本地仓库

如果我们要把一个项目加入到Git的版本管理中,可以在项目所在的目录用git init命令建立一个空的本地仓库,然后再用git add命令把它们都加入到Git本地仓库的暂存区(stage or ...
  • junli_chen
  • junli_chen
  • 2016-09-22 15:18:42
  • 14103

Windows 下 Git 简单建库

前提  1.下载git插件,安装 2.在git上创建项目 (https://git.oschina.net) 3.复制git地址 本地建库 1. 两种方式  完全的cmd命令行建库,或者借助gi...
  • u012734710
  • u012734710
  • 2016-07-18 16:20:51
  • 85

Git学习笔记(建库)

创建版本库$git init创建成功后,在会增加一个.git的隐藏文件。将文件添加到版本库 添加要提交的文件(该文件必须在版本库文件夹或其子文件夹下)到暂存区 $git add 提交暂存区中的文件到...
  • kobetmacone
  • kobetmacone
  • 2016-02-15 14:53:53
  • 288

Git 创建本地仓库

前面已经搭好环境了,现在我们缺的是一个管理版本控制的仓库。这次的实验是在电脑本地创建本地仓库。指定路径 默认的位置是在你所安装Git的目录下。Git的仓库你可以建在你电脑的任何目录下(最好不要包含有...
  • chenxiqilin
  • chenxiqilin
  • 2016-12-30 17:51:12
  • 9399

Github仓库创建及git常用命令使用

Github现在已经成为很多开源项目代码开源仓库,和个人开发者代码托管的好地方了。很多刚接触git的小伙伴们可能不知道如何在github上创建一个仓库,并将自己的代码提交上去。接下来我就做一些简单的讲...
  • guoxiaolongonly
  • guoxiaolongonly
  • 2016-12-10 19:33:45
  • 2892
收藏助手
不良信息举报
您举报文章:Git 仓库的创建和常用命令的使用
举报原因:
原因补充:

(最多只允许输入30个字)