版本管理工具Git使用总结

什么是Git?

Git是一种分布式代码版本管理系统,使用Git,可以很方便地进行代码版本的管理

在编写代码的过程中,可以很方便地把代码进行上传或者下载,代码更新后,再上传到git

使用git,可以很方便地查看代码的修改历史

可以在 linux ,Windows ,mac 上使用 git

关于 Git 的教程,可以参考以下文章

http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

windows 下,可以使用 msysGit,可以从以下网址下载: http://msysgit.github.io/

ubuntu 下,可以使用 sudo apt-get install git 来下载最新版本的 git 工具

第一次使用 git 的时候,要执行以下两个命令:

git config --global user.name "wenjs"

git config --global user.email "[email protected]"

在linux ubuntu 学习如何使用 git

1.首先,创建一个目录来进行 git 练习工作,执行如下命令:

mkdir -p /opt/git_test

chmod 777 /opt/git_test

cd /opt/git_test

2.创建好 git_test 目录后,在该目录里执行 git init ,表示对该目录进行初始化,

执行完后,该目录就是本地的一个空的 git 仓库,该目录里面有一个隐藏的文件夹 .git

该文件夹包含本地仓库的一些信息,不要试图更改该目录下的文件,否则会破坏本地仓库

3.在 git_test 目录下,创建一个 hello.c 文件夹,编写代码,然后保存,准备上传到 git 测试用

4.编辑完文件后,就可以使用以下命令,把文件上传到 git 仓库了

git add hello.c       表示把 hello.c 添加到本地的 git 仓库,可反复多次使用

git commit -m "this is a test hello.c file"     表示使用 git commit 命令把文件提交到 git 仓库,该命令的 -m 参数表示后面的是文件的说明,强烈建议加上文件说明

使用 git add 命令,可以添加多个文件,而使用 git commit 命令,是一次提交到 git 仓库,意思就是添加多个文件,一次提交

5.假如对 hello.c 文件进行了修改,但还没有提交到 git 仓库,可以使用如下命令查看文件状态

git status   该命令表示可以查看当前的文件状态,查看文件是否已经被修改过

git diff     该命令表示可以查看文件被修改的内容

6.修改完成后的文件,同样可以使用 git add 和 git commit 两条命令来进行添加和提交

7.git 最大的好处就是,可以随时使用命令查看版本的历史,使用如下命令:

git log     该命令表示可以从近到远查看提交的日志记录

如果嫌该命令输出的信息太多,可以使用 git log --pretty=oneline

[email protected]:/opt/git_test# git log --pretty=oneline

f7f74f3d08f42872c85e71bc23057da0e3b275c2 this is a update hello.c file wenjs

86a76e63fb5aa8cbba4a3d2fe35b75ff081efa8f this is a update hello.c file

50b070643f12ee130e5266c5f7dc3cb1e4470c32 this is a test hello.c file

前面一大串的字符串表示版本号(commit id)

8.使用 git 命令回到上一个版本,必须先知道当前的版本号是多少。

在 git 里面,当前的版本号用 HEAD 表示,上一版本用 HEAD^ 表示,上上一版本用 HEAD^^ 表示 ,上100个版本用 HEAD~100 表示

9.使用如下命令,可以回到上一个版本

git reset --hard HEAD^

--hard 参数表示:

使用 git log 查看,发现最新版本的文件已经不见了

10.如果要恢复到最新的版本,可以翻看终端的历史记录,查看最新版本的 commit id 号,使用如下命令

git reset --hard f7f74f       --表示恢复到 id 号为 f7f74f... 的文档,id号不用填完,git 会自动查找

11.如果终端的记录不能上翻了,git 还可以使用如下命令,查看曾经使用过的 git 命令

git reflog     该命令可以查看你使用过的每一条 git 命令

12.如果想放弃工作区的修改,回到修改前的状态,可以使用以下命令

git checkout -- hello.c

13.如果工作区的内容被修改,并且 add 到了暂存区,可以使用如下命令撤销操作

git reset HEAD hello.c    git reset 命令既可以回退版本,也可以把暂存区的内容撤回到工作区

14.如果本地的文件被删除,想本地版本库也同时被删除,可以使用如下命令:

git rm hello.c   该命令可以删除版本库里面的文件

15.如果是在本地删错了文件,但版本库还有文件,可以使用如下命令:

git checkout -- hello.c      git checkout 其实是一键还原工具,无论是删除恢复还是修改,都可以使用git checkout 回到以前版本

--------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------

如何创建和使用 git 的远程仓库

使用 GitHub 网站,可以创建自己的远程仓库,先注册一个 GitHub 账号

由于本地的 git 仓库和远程的 git 仓库是使用 ssh 协议加密进行传输的,因此,需要先查看 pc 机的主目录是否有 .ssh 文件夹

如果没有,可以使用以下命令创建 ssh key

ssh-keygen -t rsa -C "[email protected]"

把邮箱地址换成自己的邮箱后,一路回车,过程中不需要设置密码,顺利完成的话,会在主目录找到 .ssh 目录,里面有 id_rsa 和 id_rsa.pub 两个文件

这两个文件就是 ssh key 的密钥对,其中,id_rsa 是私钥,不能公开,id_rsa.pub 是公钥,可以公开

1.使用注册好的账号,登录 git hub ,打开“Account settings”,“SSH Keys”页面

2.点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容

3.点“Add Key”,你就应该看到已经添加的Key

通过以上步骤,就可以创建一个远程仓库了

假设已经在本地创建了一个本地版本库,又想在 github 创建一个远程库,并且让这两个仓库进行同步

1.登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库

2.在Repository name填入git_test,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库

3.如何让本地仓库与 GitHub 仓库进行关联,进入本地的git仓库,执行以下命令:

git remote add origin [email protected]:wenjs0620/git_test.git

其中,wenjs0620 是自己的github账户名,而远程库的名字是 origin ,可以修改,但这是 github 的默认叫法

4.可以使用以下命令,把本地仓库的内容推送到远程仓库

git push -u origin master    把当前分支master推送到远程

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,

Git不但会把本地的master分支内容推送的远程新的master分支,

还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令

5.经过以上步骤,从现在起,只要本地进行了 git commit 提交,就可以使用 git push origin master 进行远程推送

当你第一次使用Git的clone或者push命令连接GitHub时,会得到一个警告:

The authenticity of host ‘github.com (xx.xx.xx.xx)‘ can‘t be established.

RSA key fingerprint is xx.xx.xx.xx.xx.

Are you sure you want to continue connecting (yes/no)?

这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,

需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。

Git会输出一个警告,告诉你已经把GitHub的Key添加到本机的一个信任列表里了:

Warning: Permanently added ‘github.com‘ (RSA) to the list of known hosts.

这个警告只会出现一次,后面的操作就不会有任何警告了。

总结一下:

要关联一个远程库,使用命令git remote add origin [email protected]:path/repo-name.git

关联后,使用命令git push -u origin master第一次推送master分支的所有内容

此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改

--------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------

如何在远程库进行克隆

1.登录 github ,创建一个新的仓库,命名为 git_skills

2.勾选Initialize this repository with a README,

这样GitHub会自动为我们创建一个README.md文件。创建完毕后,可以看到README.md文件

3.现在,远程库已经准备好了,下一步是用命令git clone克隆一个本地库

git clone [email protected]:wenjs0620/git_skills.git

通过以上三个步骤,就可以从远程库克隆到本地库了

实际上,GitHub给出的地址不止一个,还可以用https://github.com/xxxxxx/xxxxxx.git这样的地址。

Git支持多种协议,默认的git://使用ssh,但也可以使用https等其他协议。

使用https除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,

但是在某些只开放http端口的公司内部就无法使用ssh协议而只能用https。

------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------

git 分支与管理

使用 git 分支,是为了可以在分支上进行工作而不影响主分支,团队成员在各自的分支上工作,不会相互影响,

等到工作完成,可以把自己的分支合并到主分支

git 分支管理策略

通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。

如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。

------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------

git 标签管理

发布一个版本时,我们通常先在版本库中打一个标签,这样,就唯一确定了打标签时刻的版本。

将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。

Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针

(跟分支很像对不对?但是分支可以移动,标签不能移动),所以,创建和删除标签都是瞬间完成的。

1、首先,切换到需要打标签的分支上,使用以下命令:

git checkout master

2、使用以下命令,打上标签:

git tag v1.0

默认标签是打在最新提交的commit上的

3、如果要对历史的版本打上标签,可以使用以下方法:

git log --pretty=oneline --abbrev-commit      查看所有版本的id号

git tag v0.9 <commit_id>     对某个具体的版本打上标签

git tag      查看所有版本的标签

4、要查看标签的信息,可以使用以下的命令:

git show <tagname>

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

git tag -a v1.0 -m "this is the first tag"

6、可以使用以下命令,对标签进行删除:

git tag -d <tag_name>

7、标签只会在本地保存,要推送到远程,可以使用如下命令:

git push origin <tag_name>      推送某个具体标签到远程

git push origin --tags          推送所有未推送的标签到远程

8、如果标签已经推送到远程,要删除标签,可以使用以下命令:

git tag -d <tag_name>                      先删除本地标签

git push origin :refs/tags/v0.9            从远程删除

-----------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------

使用 git 忽略特殊文件

有些时候,你必须把某些文件放到Git工作目录中,但又不能提交它们,比如保存了数据库密码的配置文件啦,等等。

每次git status都会显示Untracked files ...,有强迫症的童鞋心里肯定不爽。

好在Git考虑到了大家的感受,这个问题解决起来也很简单

在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。

不需要从头写.gitignore文件,GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了。

所有配置文件可以直接在线浏览:https://github.com/github/gitignore

忽略文件的原则是:

1、忽略操作系统自动生成的文件,比如缩略图等;

2、忽略编译生成的中间文件、可执行文件等,自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;

3、忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。

最后一步就是把.gitignore也提交到Git,就完成了!

当然检验.gitignore的标准是git status命令是不是说working directory clean。

使用Windows的童鞋注意了,如果你在资源管理器里新建一个.gitignore文件,它会非常弱智地提示你必须输入文件名,

但是在文本编辑器里“保存”或者“另存为”就可以把文件保存为.gitignore了。

有些时候,你想添加一个文件到Git,但发现添加不了,原因是这个文件被.gitignore忽略了:

如果你确实想添加该文件,可以用 -f 强制添加到Git:git add -f App.class

或者你发现,可能是.gitignore写得有问题,需要找出来到底哪个规则写错了,可以用git check-ignore命令检查:、

git check-ignore -v App.class

.gitignore:3:*.class    App.class

Git会告诉我们,.gitignore的第3行规则忽略了该文件,于是我们就可以知道应该修订哪个规则。

忽略某些文件时,需要编写.gitignore

.gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理!

-------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------

总结 Git 的使用方法:

第一次使用 git :

git config --global user.name "wenjs"

git config --global user.email "[email protected]"

本地先新建一个目录: mkdir -p git_test/

对目录进行初始化: git init git_test

添加文件到本地仓库: git add hello.c

提交文件到本地仓库: git commit -m "this is a git test file"

查看仓库状态: git status

查看文件修改情况 git diff hello.c

查看历史版本: git log --pretty=oneline

恢复到最新版本: git reset --hard f7f74f

放弃工作区修改:git checkout -- hello.c

撤销暂存区修改:git reset HEAD hello.c

远程同步,创建密钥对:ssh-keygen -t rsa -C "[email protected]"

远程与本地关联:git remote add origin [email protected]:wenjs0620/git_test.git

内容从本地推送到远程:git push -u origin master

从远程克隆到本地:git clone [email protected]:wenjs0620/git_skills.git

查看分支:git branch

创建分支:git branch <name>

切换分支:git checkout <name>

创建+切换分支:git checkout -b <name>

合并某分支到当前分支:git merge <name>

删除分支:git branch -d <name>

查看分支合并图:git log --graph

新建一个标签,默认为HEAD,也可以指定一个commit id:  git tag <name>

指定标签信息:git tag -a <tagname> -m "blablabla..."

用PGP签名标签:git tag -s <tagname> -m "blablabla..."

查看所有标签:git tag

推送一个本地标签:git push origin <tagname>

推送全部未推送过的本地标签:git push origin --tags

可以删除一个本地标签:git tag -d <tagname>

删除一个远程标签:git push origin :refs/tags/<tagname>

时间: 2024-11-05 17:28:40

版本管理工具Git使用总结的相关文章

版本管理工具git与svn简介

版本管理工具 版本管理工具简介 常见版本管理工具 cvs(Concurrent Versions System) vss(Visual SourceSafe) svn 常用的版本管理工具 git 流行的版本管理工具(分支管理强于svn) bitkeeper hg cc(ClearCase) SVN 常用指令 checkout 下载代码 update 从服务器更新本地代码代码 add 向服务器添加文件 commit 提交本地的更改到服务器 showlog 查看版本日志 GIT git init 新

Studio之版本管理工具Git (图文教程)

目前业界主流的版本管理工具主要是 svn/git.svn是1种集中式的代码管理工具,而git是1种散布式的代码管理工具,广受极客的爱好.而基于git的github更是全宇宙码农的提高逼格,深究技术的必备神器.下面介绍,如何将Android Studio中的工程托管到github中. 1.使用git 1.首先在github上创建1个工程:  2.配置git环境 若Android Studio中的git环境配置有问题 需要在setting配置 可以点击右侧的Test按钮测试是不是配置成功  若没有下

谈谈分布式版本管理工具Git

一.主流的版本管理工具 目前在企业中比较主流的版本管理工具有:GIT.SVN.CVS等等. 二.什么是Git? Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件. 三.Git与SVN的的主要区别? Git是分布式版本控制系统,那么它不但和SVN一样有中央服务器,而且每个人的电脑也是一个完整的版本库,这样,工作的时候联网就不是必须的了,因为版本可以先在自己的电脑上

码农的好助手:版本管理工具git的使用

一.什么是github? GitHub 是一个面向开源及私有软件项目的托管平台,因为只支持 Git 作为唯一的版本库格式进行托管,故名 GitHub. GitHub 于 2008 年 4 月 10 日正式上线,除了 Git 代码仓库托管及基本的 Web 管理界面以外,还提供了订阅.讨论组.文本渲染.在线文件编辑器.协作图谱(报表).代码片段分享(Gist)等功能.目前,其注册用户已经超过350万,托管版本数量也是非常之多,其中不乏知名开源项目 Ruby on Rails.jQuery.pytho

版本管理工具Git三种工作流

Git是分布式版本管理控制的工具.学习Git一般都是先去学习Git的命令. 但是学习完Git的基本命令之后还是不知道怎样使用Git.首先,我们要清楚的 一点是Git的使用方法其实有很多种,也就是说Git有不同的工作流.本文介绍 一下Git常用的三种工作流. 1. 集中式工作流 集中式工作流主要是用于团队人数较少的情况,集中式工作流只在一 个分支上进行开发.每次修改都在同一个分支上提交.像写文档这种工作方式 就可以使用集中式工作流. 2. Gitflow工作流 在软件开发设计中,我们要考虑功能开发

版本管理工具Git(三)Gitlab高可用

高可用模式 企业版 社区版 我们这里说一下成本比较低的主备模式,它主要依赖的是DRBD方式进行数据同步,需要2台ALL IN ONE的GitLab服务器,也就是通过上面安装方式把所有组件都安装在一起的2台机器. 什么是DRBD 它是分布式复制块设备,软件实现的无需共享可以在服务器之间镜像块设备的存储复制解决方案. 左侧为A节点,右侧为B节点 DRBD运行在内核里,它是一个内核模块.Linux2.6.33开始已经整合进内核.上图A为活动节点,B为被动节点.A收到数据发往内核的数据通路,DRBD在数

Git——版本管理工具(一)

Git 是一个分布式版本控制工具,它的作者 Linus Torvalds 是这样给我们介绍 Git  —— The stupid content tracker(傻瓜式的内容跟踪器) 1. Git 背景 Git 最初由Linus Torvalds编写,用于 Linux 内核开发的版本控制工具. Git 与常用的版本控制工具 CVS.Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持,使源代码的发布和交流极其方便. Git 的速度很快,这对于诸如 Linux kerne

Git 版本管理工具(一)

Git 是一个分布式版本控制工具,它的作者 Linus Torvalds 是这样给我们介绍 Git  —— The stupid content tracker(傻瓜式的内容跟踪器) 1. Git 背景 Git 最初由Linus Torvalds编写,用于 Linux 内核开发的版本控制工具. Git 与常用的版本控制工具 CVS.Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持,使源代码的发布和交流极其方便. Git 的速度很快,这对于诸如 Linux kerne

git版本管理工具的上手

git是一个分布式的版本管理工具 和其他集中式版本管理 工具相比具有以下优点: 1.可以在不联网的情况下开发 2.可以方便的建立本地分支 3.本地化的日志,快速获得信息 git命令的使用 mkdir /d/myproject  (在本地d盘下面创建一个名为myproject的本地仓库) cd /d/myproject    (切换到该目录下) git init  (初始化为主枝) git add filename  (添加一个文件的记录   一次只能添加一个文件) git commit -m "