Git 基础操作
[TOC]
在Linux上安装Git
$ git --version #查看git的版本号
$ sudo apt-get install git # 安装git
创建版本库
$ git init # 在当前目录下创建版本库
Initialized empty Git repository in /home/ronny/work/CrowdAnalyzer/.git/
创建好版本库后,在当前目录上会出现一个.git的目录,该目录是Git用来跟踪管理版本库的。
注:所有版本控制系统,其实只能跟踪文本文件的改动,而图像、视频图这些二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来。
添加与提交
$ git add file.txt # 往版本库里添加file.txt
$ git add * # 将目录下所有文件添加入库
$ git commit -m "add new file file.txt" # 提交刚才的添加
查看仓库当前状态
$ git status
当你修改了某个文件,但没有添加(add
)时,使用git status
仓储会显示:
$ git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: readme.txt
#
no changes added to commit (use "git add" and/or "git commit -a")
这时可以使用git checkout -- readme.txt
来撤销本次修改。也可以用git diff readme.txt
来查看修改了哪些地方。实际上这个命令就是丢弃工作区的修改。
当你添加了某个文件,但是没有提交(commit
)时,使用git status
命令会显示:
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: readme.txt
#
可以使用git reset HEAD readme.txt
来取消这次add
,接着仍需要git checkout -- readme.txt
来取消修改。实际上这个命令就是把暂存区的修改移回来工作区内。
查看提交日志
所谓提交日志,即只有执行过提交(commit
)命令,才会被记录。
$ git log
commit 89b603171130894f6dc4189cd80dae5e68d3584e
Author: ronny <yangyansheng@sensetime.com>
Date: Tue May 5 18:00:00 2015 +0800
Add Projects files to git
git log
命令显示从最近到最远的提交日志。如果嫌输出的信息太多,可以加上--pretty=oneline
参数。
$ git log --pretty=oneline
89b603171130894f6dc4189cd80dae5e68d3584e Add Projects files to git
89b60317...是commit id
(版本号),它是一个SHA1计算出来的非常大的数字,用十六进制表示。
所有提交与回退的操作历史记录可以用git reflog
查看。
版本回退
$ git reset --hard HEAD # HEAD代表当前版本,HEAD^代表上一版本,依次类推HEAD^^
$ git reset --hard 89b60317 # 用commit id进行版本回退
注意:回到的那次提交,提交的内容已经发生了。如果已经回退最到最初的一个版本,再回退,会发生错误。
工作区与暂存区
我们使用git add
把文件添加进去,实际上是把文件的修改添加到暂存区;
而使用git commit
提交更改,实际上就是把暂存区的所有内容提交到当前分支;
删除文件
当你删除了一个已经加入git仓库中的文件后,使用git status命令查看:
$ git status
# On branch master
# Changes not staged for commit:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted: test.txt
#
no changes added to commit (use "git add" and/or "git commit -a")
需要进行下面两步,让仓库记录这次删除:
$ git rm readme.txt # 把修改提交到暂存区
$ git commit -m "remove readme" # 提交修改
使用远程仓库
创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell,创建SSH Key:
$ ssh-keygen -t rsa -C "youremail@example.com"
将本地仓库推送到GitHub上
$ git remote add origin git@github.com:RonnyYoung/CrowdAnalyzer.git
$ git push -u origin master
要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git
;
关联后,使用命令git push -u origin master
第一次推送master分支的所有内容;
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master
推送最新修改;
可以把一个远程的库克隆到本机上:
$ git clone git@github.com:RonnyYoung/CrowdAnalyzer.git
分支管理
查看分支:git branch
创建分支:git branch <branch name>
切换分支:git checkout <branch name>
创建并且切换分支:git checkout -b <new branch>
合并某分支到当前分支:git merge <branch name>
删除分支:git branch -d <name>
步骤1:相关项目管理人员,登录GitLab并在Gitlab上建立内Private或Internal项目仓库,并增加相关项目人员。
步骤2:仓库管理人员,建立好远程仓库,并添加项目相关文件。添加tag标识当前代码的版本(如人群v1.4)
步骤3:管理人员建立版本分支,如开发版本v1.5
git checkout -b v1.5 # 建立v1.5分支并切换到该分支上
git push origin v1.5 # 把v1.5分支推送到远程仓库
步骤4:相关开发人员从远程仓库克隆项目到本机,并将版本分支获取下来。
git clone git@gitlab.sz.sensetime.com:yangyansheng/crowd-analysis.git
git checkout -b dev origin/v1.5 # 创建本地的版本分支,并命名为dev
步骤5:开发人员在分支dev上工作并提交,觉得功能稳定后将dev推送至远程的版本分支v1.5
... # 此处在dev上修改并稳定了某些功能(相关操作add,commit,rm,reset等)
git pull
.... # 解决冲突或合并
git push origin dev:v1.5 #将本机的dev版本分支推送到服务器版本分支上
步骤6:项目管理人员,在版本v1.5开发基本完成,可以release时,将版本分支合并到master分支上,并加上tag发布新版本。
git pull #从服务器拉取最新的版本分支
git checkout master #切换到master分支上
git merge v1.5 # 将版本分支v1.5合并到master分支上。
git tag v1.5 # 给master分支打tag标明v1.5版本完成。
git push orign master # 将master分支推送到远程
标签管理
命令git tag <name>
用于在当前分支上新建一个标签,默认在HEAD
上,也可以指定一个commit id。
命令git tag -a <tagname> -m "some tag information"
可以指定标签的信息。
命令git tag
可以查看所有标签。
Git 基础操作的更多相关文章
- Git基础操作
配置秘钥 1.检查本机有没有秘钥 检查~/.ssh看看是否有名为d_rsa.pub和id_dsa.pub的2个文件. $ ~/.sshbash: /c/Users/lenovo/.ssh: Is a ...
- 《Pro Git》笔记2:Git基础操作
第二章 Git基础 Git基础包括:版本库的创建和获取,文件添加修改提交等基本操作,状态查询,远程版本库管理和同步,打标签. 1.取得项目的Git版本库 基于Git的工作流要以Git版本库为基础,即可 ...
- python flask学习(1)与Git基础操作
今天从简单的flask开始完成Flask web开发的学习.今天学习了Git和GitHub项目的提交. Git尝试提交过程中出现了"Could not read from remote re ...
- 【Git】Git基础操作
repository:版本库又名仓库,可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改.删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以&q ...
- python git 基础操作
模块安装 pip install gitpython 基本用法 1. 初始化 from git import Repo Repo.init('/data/test2') # 创建一个git文件夹 # ...
- 『现学现忘』Git基础 — 14、Git基础操作的总结与补充
目录 1.Git本地版本库结构 2.Git常用操作方法 3.补充:添加多个文件到暂存区 4.补充:提交操作未写备注 5.补充:从工作区直接提交到版本库 1.Git本地版本库结构 如下图所示: 工作区( ...
- Git 学习笔记--1.Git基础操作
取得项目的Git仓库 有两种方式取得Git项目仓库.第一种是在现存的目录下,通过导入所有文件来创建新的Git仓库.第二种是从已有的Git仓库克隆出一个新的镜像仓库. 在工作目录中初始化新仓库 要对现 ...
- 有关Git基础操作的学习
Git简介 Git是一个免费的开源 分布式版本控制系统,旨在快速高效地处理从小型到大型项目的所有内容. Git 易于学习, 占地面积小,具有闪电般的快速性能.它具有诸如Subversion,CVS,P ...
- 一篇长文说 git 基础
版本管理在产品级开发中是非常重要的一个部分,它涉及到团队协作,且影响到产品最终的发布.上线以及测试环节,当前最流行的版本控制系统是 git.git 内容非常多,本文尽量克制地来介绍 git 的基础内容 ...
随机推荐
- Qt 文件处理
1.删除目录下所有的文件 void deleteAllFiles(const QString& fileDir) { QDir dir(fileDir); if(!dir.exists()) ...
- selenium处理rich text(富文本框)
WordPress 的 rich text 采用js,先让selenium切换到iframe中 driver.switchTo().frame("content_ifr"); 然 ...
- 2014北大研究生推免机试(校内)-复杂的整数划分(DP进阶)
这是一道典型的整数划分题目,适合正在研究动态规划的同学练练手,但是和上一个随笔一样,我是在Coursera中评测通过的,没有找到适合的OJ有这一道题(找到的ACMer拜托告诉一声~),这道题考察得较全 ...
- Js 旋转木马 轮播
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 【XLL API 函数】xlSheetNm
从外部引用包含的工作表ID返回工作表或宏表名称,或是当前表名称. 原型 Excel12(xlSheetNm, LPXLOPER12 pxRes, 1, LPXLOPER12 pxExtref); 参数 ...
- ZendStudio如何汉化
点击工具栏的help,看图 点击 Install New Sofaware... 看图 然后.... 在地址(12.0的版本):http://download.eclipse.org/techno ...
- 当你的IIS需要运行ASP网站时,需要这样配置下你的IIS
1.进入Windows 7的 控制面板->程序和功能->选择左上角的 打开或关闭Windows功能 2.现在出现了安装Windows功能的选项菜单,注意选择的项目,红色箭头所示的地方都要选 ...
- Delphi 2010 Can't load package C:\Programme\Afalinasoft\Add-in Express 2\d5units\adxwizardd5.bpl.
"Can't load package C:\Programme\Afalinasoft\Add-in Express 2\d5units\adxwizardd5.bpl. Componen ...
- [Android Pro] 告别编译运行 ---- Android Studio 2.0 Preview发布Instant Run功能
reference to : http://www.cnblogs.com/soaringEveryday/p/4991563.html 以往的Android开发有一个头疼的且拖慢速度的问题,就是你每 ...
- 关于HTML5在动画制作工具Animatron的一些问题
Animatron是国外一款在线HTML5动画制作工具,网址:www.animatron.com 当然,想使用的话,是需要FQ的. 用animatron制作好的动画是可以下载为代码和GIF的,这时候付 ...