git用法总结

关于git

Git,是一个分布式版本控制软件。最初本是为了更好的管理Linux内核开发而被林纳斯·托瓦兹开发,后来因为项目开发中版本控制的强烈需求,而git也日趋成熟,最终成为了一个独立的版本控制软件。

git使用方法

创建远程仓库

说得白话一点就是在代码托管服务器上给我分配一片可远程访问的空间,目前支持git的代码托管服务很多,名气最大的莫过于Github,其他还有GitLab

有什么好处:

1、方便多人(有权限)共享,团队开发尤为重要;

2、不怕更换电脑,公司和家里或出差,只要有电脑就可以访问;

3、不怕硬盘损坏代码丢失;

4、其他还有很多。

基于以上代码托管服务器,建立一个远程仓库非常简单,以Github为例,打开https://github.com 首页登录进去后,页面右上角有一个“+”图标,根據提示即可創建。

创建本地代码库(init)

本地代码库,其实就是我们的代码目录,如果非要区别普通代码目录和git仓库目录,那就是基于git的代码目录里面会多一个.git的目录,这个目录一般是不可见的。如何将一个普通代码目录变成git工作目录,其实很简单。我们可以使用cmd、git bash或任何一个命令行工具,进入工作目录,然后运行下面这行代码就可以了:

git init

当本地仓库初始化好后,其实我们已经可以使用git工作了,比如将代码文件添加到版本记录,创建本地分支,合并本地分支代码等等。

绑定本地代码库与远程仓库(remote | clone)

如果仅仅使用git在本地捣鼓,那么我们上面提到的远程代码托管的优势就完全没有意义了,所以我们要把我们的本地仓库和远程仓库绑定起来,这里就要分情况了。

如果是现在本地已经开发的一个全新项目需要推送到远程仓库:

git remote add origin https://github.com/username/project.git

如果是在别人已经开发过的仓库中继续开发,不需要预先建立并初始化本地仓库,直接执行下面这条命令:

git clone https://github.com/username/project.git

查看仓库文件状态(status)

当我们已经拥有一个本地git仓库或对我们的项目进行了修改后,只需在git bash中执行:

git status

通常情况下,可能看到一堆红色标记的列表,包括以下信息:

1)Changes to be committed:等待提交的更改

2)new file:新增文件

3)modified:有改动的文件

4)deleted:删除的文件

5)Untracked files:未添加到版本记录的文件

如果是一个全新仓库,我们只能看到Untracked files项。

添加文件并提交到暂存区(add & commit)

当通过git status看到有红色文件列表,而且其中有我们想要保存到远程仓库中的文件时,我们可通过git add 命令,将相应文件添加到暂存区,我们也可以通过git add .命令,添加所有新增或有更新的文件,但这里要注意删除的文件不会被添加。

添加删除的文件需要使用git add -u filename或git add -u .命令。

接下来我们还需要执行一个命令git commit,才能将添加的文件(变化)提交到暂存区。这个命令的用法也有几种,常见的是直接执行git commit -m ‘log info’,还有一种是执行git commit打开指定编辑器,编辑好日志后关闭编辑器即可,一般用于日志内容比较多的情况。

创建并切换分支(branch & checkout)

在实际开发过程中,我们需要考虑代码的稳定性,未经过测试的代码不能发布到线上环境。这就意味着我们如果我们一直在一个分支上开发代码是很危险的,一步留神就可能把有bug的代码提交到了远程仓库,造成不必要的麻烦,所以一般情况下使用版本控制器,我们都会使用它的分支功能。即开发分支、主干分支,当开发分支上的代码测试稳定后,再合并到主干分支,将主干分支提交到远程仓库,这样出错的概率就降低了很多。

使用git bash可以很方便的建立分支,我们只需执行git branch newbranch即可创建一个名为newbranch的分支,然后我们只需执行git checkout newbranch命令,即可将我们的工作环境切换到newbranch分支上。

还有一种更为简便的方法,可以直接使用checkout命令,完成创建并切换到分支:

git checkout -b newbranch

合并分支(merge)

前面我们提到了,当开发分支上的代码测试稳定后,我们就可以合并到主干分支上,并提交到远程仓库。那么如何合并两个分支的代码成了一个问题。难道要对比两个文件的差异,一行一行的copy代码?显然git不会这么笨,它是很智能的,我们只需简单的运行一条命令即可完成代码自动合并。我们设想开发分支(newbranch)将被合并到主干分支(master)上,那么首先我们要先将开发分支的代码提交到暂存区,然后切换到主干分支,最后执行合并操作,完整的操作流程大致如下:

git add .

git commit -m ‘newbranch

git checkout master

git merge newbranch

但是,在合并代码的时候,特别是多人开发的时候,偶尔出现冲突(两个人同时改动了同一个地方)也是在所难免的,这种情况,我么恐怕就需要人肉解决下了。不过问题不大,git将文件冲突的地方都会以特殊的形式标明的。

# 冲突示例 <<<<<<< HEADaa # 当前分支上的内容 ======= bb # 被合并分支上的内容 >>>>>>>nb

将本地代码推送到远程仓库(push)

当开发分支上的代码都被合并到主干分支上,并且所有的冲突都解决好后,我们就可以将主干分支的代码推送到远程仓库,提供给别人使用了。这一步很简单:

git push origin master

还记得我们执行git remote add后面的origin吗?这里和那里是一样的,而最后那个master就是分支名称了。如果远程已经有该分支,便会先检查远程仓库在最近一次更新之后发生过更改,如果有会提示先进行更新代码,然后再提交。如果未变动过,本地代码则会直接提交至远程代码仓库。

将远程仓库中的代码更新到本地(pull & fetch)

然而,一般情况下,我们在执行git push之前,都会先更新一次远程仓库中的内容:

git pull origin master

这里我们需要注意一下,和git merge命令一样,pull命令是有可能导致代码冲突的。而pull命令从某种意义来讲实际和fetch+merge命令一样,这里就不再对fetch做进一步说明了。

比较代码差异(diff)

通常我们在开发过程中涉及的文件比较多,修改的地方也比较多,当我们需要提交代码的时候,往往想不起来我们修改了哪些内容,哪些问需被提交。这时候我们可能希望能查看一下在前次提交代码之后我们对本地仓库所做的改动,可以这么做:

git diff

查看working tree和indexfile的差别,也可以:

git diff --cached

查看index file与commit的差别,还可以:

git diff HEAD

查看working tree和commit的差别。

diff命令的使用,大致就是这个样子。

代码回滚与日志(reset & log)

当我们的项目开发到一定阶段后,也许偶尔就发现该版本的升级存在问题,需要临时将项目恢复到上一个稳定版本。但是,人肉的将升级代码改回去,显然是不现实的,更科学的解决方法是使用git的reset命令:

git reset --hard commitId

将本地仓库代码回滚到commitId对应的版本,或者:

git reset --hard HEAD~number

将最近number次的提交进行回滚,number为一个整数。那么问题来了,当我们需要回滚到指定版本的时候,commitId从何而来?我们怎么知道哪个commit是最近的稳定版本?

说到这里,就该log命令出场了。我们可以使用log命令,查看仓库的提交历史,以及每个提交的更改日志,甚至更改的内容,其最基本的用法如下:

git log -2 # 查看最近两次的提交历史 git log # 默认会输出所有的提交历史,最近的在最上面

我们可以根据日志内容,找到响应的稳定版本代码的commitId,然后再使用reset命令进行代码恢复。reset和log命令非常强大,了解更多上網查閱。

给代码库打标签(tag)

tag命令,是用来给我们的代码库打标签的。听起来可能有些不太理解,其实日常使用中,通常是用来添加版本标记。

git tag v1.0.0

表明在这里我们发布了1.0.0版本。这样就可以很方便的让我们回顾项目每个版本的样子,历史就是这样用血写成的。我们也可以通过tag命令查看已有的标签,只需要执行:

git tag

打造自己的git命令

Git已然非常强大,而且git的命令也已经非常简洁明了。但是,开发者们往往希望使用工具的同时能保留自己的个性,希望能符合自己的操作习惯。比如笔者就嫌checkout命令太长了,虽然各种自动补全,但用起来还是觉得不顺手,那么有没有什么办法可以再简洁些呢?答案是肯定的。下面给大家列出笔者的缩写配置,当然也是曾经参考了很多网上大牛们的教程的。

git config --global alias.st status

git config --global alias.br branch

git config --global alias.co checkout

git config --global alias.ci commit

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

时间: 2024-10-28 23:05:05

git用法总结的相关文章

git 用法总结

git 用法总结 A) git 配置 初始化git根目录 在已有目录内部 cd git_root_dir git init 在当前位置生成 git 根目录 git init git_root_dir git 配置文件: ~/.gitconfig 或者 git_root_dir/.git/config 设置 core info git config --global core.editor "vim" 设置 user info git config --global user.name

Bitbucket - 用git 用法

核心流程: 从远端中心repo那里Git clone 到本地,再在本地开发(add, commit), 通常会利用branch管理,如果觉得code 没问题了,就push到远端的中心repo上.这里中心的repo 就是 bitbucket上的repo. git 之后 不需要 减号- 1. git  clone https的path 把repo下载到本地 2. git status 查看哪些文件修改了. 如果提交前,想看看具体那些文件发生变化,可以通过git-diff来查看.git diff 与

git用法大全

转载自实验楼,之前有更新过两篇git的文章,毕竟内容太少,而git还有很多更丰富的技能,在实验楼上有一系列全的教程,这里做一下备案.需要时查阅. Git 实战教程 目录 一.实验说明 二.git的初始化 1.Git 配置 三.获得一个Git仓库 1.Clone一个仓库 2.初始化一个新的仓库 四.正常的工作流程 1. 正常的工作流程 五.分支与合并 1.分支 2. 撤销一个合并 3.快速向前合并 六.Git日志 1.查看日志 2.日志统计 3.格式化日志 4.日志排序 七.小结 八.练习 一.实

CSDN code使用教程之git用法详解

首先需要下载GIT客户端,http://git-scm.com/downloads...   然后再code.csdn.net上面创建一个项目,如果 你的项目已经存在,那么请建立项目的时候不要选择自动生成readme文件.填写项目名称,去掉下面的勾勾,然后点击创建就OK了. 下面的就是配置本地客户端了,确认你在CSDN id,获取的方式是在登录后,进入passport.csdn.net,在"个人帐号"的最下端查看用户名:也就是你的昵称,我的就是Linux_Google 然后在命令行中输

git用法

创建版本库(repository) $ mkdir firstry $cd firstry $git init $vi readme.txt $git add readme.txt $vi readme1.txt $git add readme1.txt $git commit  -m 'I write two flies' PS:git init就相当于为当前状态的文件夹建立一个指针链表,主要用来追踪文件的状态,同时可以回退,还原等 在git init之后,在文件夹中添加文件,只有在git a

git 用法详解小记

1.安装 sudo apt-get install git    git config --global user.name "yourname"       git config --global user.email "137505******@163.com"2.初始化:①创建一个目录:mkdir reangittoday②git init ③->git add filename -> git commit -m "添加说明文字"

Pycharm版本控制之本地Git用法

转载至:http://blog.csdn.net/u013088062/article/details/50350520 1.主题 介绍如果通过Pycharm使用本地Git集. 2.准备工作 (1)PyCharm版本为2.7或更高 (2)已经创建一个工程 (3)Git插件可用,对应可执行文件在 Git page页面正确配置 3.创建一个Git集 按下Alt+`显示常用的VCS命令(也可以通过主菜单VCS→VCS Operations Popup),选择Create Git repository命

git用法之常用命令

1.git 安装好后,如何配置? a: 设置本地用户名.邮箱,很重要!之后的每次提交都会用到这两条信息,说明是谁提交了更新. $ git config --global user.name "John Doe" $ git config --global user.email [email protected] 这是设置全局的用户名.邮箱.当然如果你要在某个项目单独修改也可以,不加 --global 再在项目单独设置一次就好. b: 生成ssh 公钥 ssh-keygen -t rsa

现代软件工程 第二章 作业 2 学习git用法与心得——孙雪莹

题目:每人自己建立一个HelloWorld项目,练习使用git的add/commit/push/pull/fetch/clone等基本命令.比较项目的新旧版本的差别. 参考:廖雪峰的官方网站——Git教程 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 第一步:我用的是Windows系统,所以首先安装msysgit.安装完成后,在开始菜单找到"Git"->&quo