安装完成后,需要进一步设置用户名和email。因为git是分布式版本控制工具,因此需要每台开发机自报家门。

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

其中--global表示将设置内容配置到全局,这样整个系统的用户都应用这个设置。后面我们还将介绍直接在配置文件中设置的方法。

git的各种命令

git init - 初始化版本库
git add - 将增加或修改内容放到暂存库
git commit - 提交暂存库的内容
git status - 查看状态
git diff - 比较两次版本的不同
git log - 查看版本日志
git reflog - 查看执行的命令日志
git reset - 回退历史版本
git rm - 从版本库中删除
git checkout - 切换分支
git branch - 创建或查看分支
git merge - 合并分支
git stash - 存储工作区
git tag - 创建或查看标签
git remote - 查看远程版本库的名称
git push - 推送本地库版本到远程库
git pull - 从远程库拉取到本地库
git clone - 从远程或本地克隆版本库到指定位置

将空目录或者有内容的目录加入到git版本控制器中,由git来跟踪并管理。

git init

命令执行完后,会在当前目录下生成一个.git的目录,该目录是隐藏的。这个目录不能轻易改动,里面保存着所有的git配置。

git add

将增加或修改的文件保存到暂存库中。

git add [文件]

将所有改动的文件都存放到暂存库。

git add -A

git commit

将暂存区的内容提交到版本库。每次提交都必须将提交的注释加上。

git commit -m "注释" 

如果文件的修改或删除没有通过add或rm放入暂存区,也可以通过加入-a的参数直接提交。(增加必须通过add加入暂存区)

git commit -a -m "注释"

git status

查看文件有没有被修改的状态,无论文件是否放入暂存区,只要git监控到文件增加、修改、删除,都可以使用该命令来查看。

git status

git diff

比较未提交到暂存区的修改和上个版本的差别。

git diff [文件]

比较所有提交到暂存区的文件。

git diff

git log

查看操作日志,记录所有提交后的版本信息。可以根据日志信息回退到指定的版本。

git log

查看分支合并图

git log --graph
格式化显示效果

$ git log --graph --pretty=oneline --abbrev-commit

git reflog

查看所有执行的命令历史。

git reflog

git reset

回退历史版本。如果执行提交后又反悔了,可以通过该命令进行回退。

回退到当前版本,比如放弃当前未提交的修改。

git reset --hard head

如果要回退上一个版本,则改成

git reset --hard head~1

head~后面跟数字,表示回退到从当前版本往回数第几个版本。

也可以指定回退到某一个版本。首先通过git log,查看版本的id号,再根据id号来回退。id号可只写前四位。

git reset --hard [id]

git rm

删除文件有两种方式

  1. 直接从文件夹中删除,但是版本库中并没有被删,如果需要提交版本库就要用到git rm,再使用git commit提交。

  2. 使用git rm删除,文件会从版本库和工作区都删除,然后使用git commit提交。

用法:

git rm [文件]

git checkout

切换分支。

git checkout [分支名称]

创建并切换到该分支。

git checkout -b [分支名称]

git branch

查看分支。

git branch

创建分支。

git branch [分支名称]

删除分支。

git branch -d [分支名称]

如果删除的分支没有被合并,需要进行强制删除。

git branch -D [分支名称]

git merge

快速合并,直接改变合并分支的指针。如果合并的分支间有冲突,则需要手动解决冲突后再提交。git merge [合并的分支名称]

快速合并分支后,如果删除分支则日志记录中不会记录分支合并的操作。如果希望能记录分支合并的操作,则需要禁用快速合并。

git merge --no-ff

git stash

存储当前工作区。如果任务进行到一半,需要解决其他版本的问题,比如修复BUG。当前进行的操作可暂时保存下来,解决问题再恢复。

git stash

查看所有保存的工作现场。

git stash list

恢复保存的工作现场。git stash apply [工作现场名称]

恢复后删除工作现场
git stash drop [工作现场名称]

恢复最后保存的工作现场并同时删除

git stash pop

git tag

给最新的版本加上标签。

git tag [标签号]

给历史版本加上标签。版本id可以通过git log查看。

git tag [标签号] [版本id]

创建带有说明的标签。git tag -a [标签号] -m "标签说明" [版本id]

删除标签。

git tag -d [标签号]

远程仓库

如果不想搭建自己的git服务器,可以选择使用Github。这个网站就是提供Git仓库托管服务的,所以,只要注册一个GitHub账号,就可以免费获得Git远程仓库第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这

目录下有没有idrsa和idrsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:

$ ssh-keygen -t rsa -C [你的email]

如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有idrsa和idrsa.pub两个文件,这两个就是SSH Key的秘钥对,idrsa是私钥,不能泄露出去,idrsa.pub是公钥,可以放心地告诉任何人。第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:

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

当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。添加远程库

现在的情景是,你已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,真是一举多得。首先,登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库。

在Repository name填入learngit,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库。目前,在GitHub上的这个learngit仓库还是空的,GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。git remote

通过git remote命令关联远程库。

git remote add origin [你的github地址]

查看远程库信息git remote -v

git push

将本地库提交到远程库git push origin [分支名称]
git push origin -u [分支名称]

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时可以简化命令。git

pull

如果向远程库推送失败,有可能远程库已有新版本导致冲突,那么需要使用git pull从远程库将新版本拉取到本地,手动解决后再推送。

git pull

如果pull也失败,有可能没有与远程库关联,下面是关联方法:git branch --set-upstream [分支名称] origin/[分支名称]

远程克隆git clone如果远程已有库,可以通过git clone将远程库的内容克隆到本地。

git clone [你的git地址]

从远程克隆下来的项目只能看到master分支,如果要抓取其他分支可以使用git checkout。git checkout -b dev1 origin/dev1

git语言的更多相关文章

  1. git新手配置(windows环境)

    windows环境,初步了解git是个什么东西,使用过svn相关软件最佳,否则可以先补一下git的相关概念和用处,相关教程:https://www.liaoxuefeng.com/wiki/89604 ...

  2. TortoiseGit使用

    TortoiseGit 前言: 其实作为一名学生,还未接触过企业级开发项目,基本都是一个人在本地敲代码,对于项目管理工具使用的并不多,最常用的命令也就是git clone了,hhh: 前些日子了解了一 ...

  3. Gogs - 基于 Go 语言的自助 Git 服务

    Gogs(Go Git Service) 是一个基于 Go 语言的自助 Git 服务.Gogs 的目标是打造一个最简单.最快速和最轻松的方式搭建自助 Git 服务.使用 Go 语言开发使得 Gogs ...

  4. Git Github jekyll,gem Liquid模板语言 Markdown

    Git Git教程  常用 Git 命令清单   Git远程操作详解  使用jekyll建立个人网站 Git is a free and open source distributed version ...

  5. Git安装配置和提交本地代码至Github,修改GitHub上显示的项目语言

    1. 下载安装git Windows版Git下载地址: https://gitforwindows.org/ 安装没有特别要求可以一路Next即可,安装完成后可以看到: 2. 创建本地代码仓库 打开G ...

  6. 【转载】C/C++语言分析 & 每年学一种编程语言 & git历史

    http://blog.csdn.net/turingbook/article/details/1778867 <程序员修炼之路>英文注释版 作者提出的经营之道是:——Invest Reg ...

  7. Go丨语言package github.com/Go-SQL-Driver/MySQL: exec: "git": executable file not found in %PATH%解决方法

    Go语言在添加第三方MySQL驱动的时候报错: go: missing Git command. See https://golang.org/s/gogetcmd package github.co ...

  8. 使用pycharm手动搭建python语言django开发环境 - 使用git管理代码(二)

    在pycharm中打开项目,使用File->Version Control->Git.选中git的安装路径并点击确认. 2)在Version Control界面中,配置或新建一个git的主 ...

  9. Go语言在线培训哪里好?Git操作和代码管理

    在实际的项目开发过程中,多人进行项目开发,需要涉及到代码管理和协同管理.这就需要使用到代码协同管理工具.在过去,大家都熟悉使用的是SVN软件,而现在Git代码仓库管理软件的使用更为广泛.在本系列实战项 ...

随机推荐

  1. HTTP-304 NOT Modified

    http://www.douban.com/note/161120791/ http://blog.sina.com.cn/s/blog_4c98b9600100jd4z.html http://ww ...

  2. Hibernate 注解多对一 要求在多那边产生一个外键而不会另外产生一个表

    在使用hibernate注解的时候,我们映射一对多时,有时候莫名其妙的产生了两张表,其中一张表是A_B,这并不符合数据库中多的一方放置一个外键的原则,那么如何控制只产生一个表呢,请看下面的例子: 多的 ...

  3. CAD文件导入AD09

    1.首先将CAD图纸倒出为DXF格式的文件. 2.在altium designer 的pcb编辑中点菜单文件--导入,在弹出的对话框中,选择导入文件的类型,选择 DWG,DXF类型.然后确定,再弹出的 ...

  4. VM Depot 镜像新增系列II – 学习管理系统,内容管理系统以及平台管理工具

     发布于 2014-06-23 作者 刘 天栋 继上周企业管理软件和电子商务镜像的加盟之后,我们看到又有一批内容管理解决方案(CMS),学习管理解决方案(LMS)以及平台管理工具 (如 Open ...

  5. 1044 - Palindrome Partitioning(区间DP)

    题目大意: 给你一个字符串,问这个字符串最少有多少个回文串. 区间DP直接搞     #include<cstdio> #include<cstring> #include&l ...

  6. Java Web项目的一般目录结构解析(eclipse)

    以上为项目名为TestProject的目录结构截图,下面主要解析WebContent下各个目录的用途: css:存放项目所需要的css文件. images:存放项目所需要的图片文件. js:存放项目所 ...

  7. gcc编译器参数使用及解决

    gcc -c CStringAndPointer.c -o CStringAndPointer.o 执行时出现问题: ./CStringAndPointer.o bash: ./CStringAndP ...

  8. iOS设备保持横排方向

    //保持横排方向 -(NSUInteger)supportedInterfaceOrientations{     returnUIInterfaceOrientationMaskLandscapeL ...

  9. 高性能I/O设计模式Reactor和Proactor

    系统I/O 可分为阻塞型, 非阻塞同步型,非阻塞异步型. (Linux对aio支持的不完整,所以linux上用Reactor比较多:Proactor需要系统API支持真正的“异步”) 阻塞型I/O意味 ...

  10. Dr.com5.2 for linux

    最近安装了在ubuntu基础上改的elementaryos,很漂亮,学校提供的破linux客户端不能连上,网上常见的也是旧版本. 最后在百度Dr.com贴吧和这个帖子 http://forum.ubu ...