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 的基础内容 ...
随机推荐
- Kendo UI
http://www.cnblogs.com/libingql/category/585455.html http://www.scala-china.net/discuz/forum.php?mod ...
- liunux mysql MySQL表名不区分大小写的设置方法
原来Linux下的MySQL默认是区分表名大小写的,通过如下设置,可以让MySQL不区分表名大小写:1.用root登录,修改 /etc/my.cnf:2.在[mysqld]节点下,加入一行: lowe ...
- jenkins集成ansible注意事项Failed to connect to the host via ssh.
在集成jenkins和ansible实现自动化部署时,root用户下执行ansible命令时可以正常运行.由于是通过jenkins用户去执行ansible命令,而jenkins用户却报如下异常: XX ...
- ACM/ICPC 之 Prim范例(ZOJ1586-POJ1789(ZOJ2158))
两道Prim解法范例题型,简单的裸Prim,且两题相较以边为重心的Kruskal解法而言更适合以点为重心扩展的Prim解法. ZOJ1586-QS Network 题意:见Code 题解:直接的MST ...
- Python~list,tuple^_^dict,set
tuple~(小括号) list~[中括号] 和list比较,dict有以下几个特点: dict~{‘key’:value,} set~set([1,2,3]) tuple一旦初始化就不能修改~指向不 ...
- js中apply方法的使用
js中apply方法的使用 1.对象的继承,一般的做法是复制:Object.extend prototype.js的实现方式是: Object.extend = function(destinat ...
- asp.net mvc 部分视图加载区别
ASP.NET MVC 部分视图 ASP.NET(11) 版权声明:本文为博主原创文章,未经博主允许不得转载. [部分视图] ASP.NET MVC 里的部分视图,相当于 Web Form 里的 ...
- 【python】mysqlDB转xml中的编码问题
背景:有mysql数据库,将数据从数据库中读取,并存储到xml中 采用了MySQLdb和lxml两个库 具体编码处理过程如下: . 指定mysql的编码方式 .取数据库data->判断data类 ...
- 【XLL API 函数】 xlfSetName
常常用于创建和删除与DLL定义的名称 原型 Excel12(xlfSetName, LPXLOPER12 pxRes, 2, LPXLOPER12 pxNameText, LPXLOPER12 pxN ...
- [网络流24题] 太空飞行计划(cogs 727)
[问题描述] W 教授正在为国家航天中心计划一系列的太空飞行.每次太空飞行可进行一系列商业性实验而获取利润.现已确定了一个可供选择的实验集合E={E1,E2,-,Em},和进行这些实验需要使用的全部仪 ...