文档章节

git 的简单命令

萧小蚁
 萧小蚁
发布于 2015/10/10 20:24
字数 1184
阅读 29
收藏 0

git init

git add file.txt   添加

git commit -m "XXX"  提交

git status

git diff

git log     查看提交历史

git log --pretty=oneline  历史一行一行显示

git reset --hard head^(回退到上一个版本)

git reset --hard 版本号前几位  

git reflog  查看命令历史

git checkout -- readme.txt  丢弃工作区的修改

git reset HEAD file 不但改乱了⼯工作区某个⽂文件的内容,还添加到了暂存区时,想丢弃修改,分两步 1、reset  2、checkout

  

删除文件:

  rm 文件名

  git rm 文件名

  git commit -m "rm 文件名"


  rm 文件名

  git checkout -- test.txt


$ git push origin master    本地master分⽀支的最新修改推送⾄至GitHub


git remote add origin git@server-name:path/repo-name.git ;  关联一个远程库

git push -u origin master     第一次推送master分⽀支的所有内容;


从远程库克隆

git clone git@github.com:michaelliao/gitskills.git

Cloning into 'gitskills'...

remote: Counting objects: 3, done.

remote: Total 3 (delta 0), reused 0 (delta 0)

Receiving objects: 100% (3/3), done.

$ cd gitskills

$ ls

README.md


$ git checkout -b dev  创建dev分支,然后切换到dev分⽀支:

  git checkout 命令加上 -b 参数表⽰示创建并切换,相当于以下两条命令:

$ git branch dev  查看分支

$ git checkout dev  切换分支


$ git branch  查看当前分支

* dev

master

git branch 命令会列出所有分⽀支,当前分⽀支前⾯面会标⼀一个*号。


查看分支:git branch

创建分支:git branch name

切换分支:git checkout name


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

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

删除分支: git branch -d name


Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容


git log --graph --pretty=oneline --abbrev-commit    查看分支的合并情况


合并分支时,如果可能,Git会⽤用“Fast forward”模式,删除分支后,会丢掉分支信息。


如果要强制禁用“Fast forward”模式,Git就会在merge时生成一个新的commit,这

样,从分支历史上就可以看出分⽀支信息。

              

git merge --no-ff -m "merge with no-ff" dev   --no-ff参数,表示禁用“Fast forward”

                                              因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。



git stash  把当前工作现场“储藏”起来,等以后恢复现场后继续工作

git checkout -b issue-编号   增加bug的分支

git merge --no-ff -m "merged bug fix 101" issue-101   bug合并到主干

git branch -d issue-编号  删除bug分支

git stash list 查刚才的工作现场

git stash apply  恢复现场   git stash apply stash@{0}

git stash drop   删除stash内容

git stash pop 恢复现场的同时,删除stash内容  


开发一个新feature,最好新建一个分支;

如果要丢弃一个没有被合并过的分支,可以通过 git branch -D name 强行删除。


git remote 查看远程库的信息

git remote -v 查看远程库,显示更详细的信息


多人协作

查看远程库信息,使用 git remote -v ;

• 本地新建的分支如果不推送到远程,对其他人就是不可见的;

• 从本地推送分支,使用 git push origin branch-name ,如果推送失败,先用git pull抓

取远程的新提交;

• 在本地创建和远程分支对应的分支,使用 git checkout -b branch-name origin/branch-

name ,本地和远程分支的名称最好一致;

• 建立本地分支和远程分支的关联,使用 git branch --set-upstream branch-name

origin/branch-name ;

• 从远程抓取分支,使用 git pull ,如果有冲突,要先处理冲突。



标签


  git tag v1.0   创建标签

  git tag   查看标签

  git log --pretty=oneline --abbrev-commit 找到历史提交的commit id

  git tag 版本号 commit id   对某次的提交打标签

  git show 版本号 查看标签信息


  还可以创建带有说明的标签,⽤用-a指定标签名,-m指定说明⽂文字:

  $ git tag -a v0.1 -m "version 0.1 released" 3628164


还可以通过-s⽤用私钥签名⼀一个标签:

$ git tag -s v0.2 -m "signed version 0.2 released" fec145a

签名采⽤用PGP签名,因此,必须⾸首先安装gpg(GnuPG),如果没有找到gpg,或者没有

gpg密钥对,就会报错:

gpg: signing failed: secret key not available

error: gpg failed to sign the data

error: unable to sign the tag

如果报错,请参考GnuPG帮助⽂文档配置Key。



  git tag -d 版本号  删除标签

  git push origin 版本号  推送某个标签到远程

  git push origin --tags  一次性推送全部尚未推送到远程的本地标签

 

  如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除:

  $ git tag -d v0.9


  然后,从远程删除。删除命令也是push,但是格式如下:

  $ git push origin :refs/tags/v0.9



git的其他设置


  $ git config --global color.ui true   让Git显示颜色,会让命令输出看起来更醒目:


配置别名


  $ git config --global alias.st status 


© 著作权归作者所有

共有 人打赏支持
萧小蚁

萧小蚁

粉丝 98
博文 279
码字总数 192339
作品 0
海淀
程序员
GitLab的安装及使用(CentOS 7)

一、前言 GitLab是利用 Ruby on Rails 一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。 它拥有与Github类似的功能,能够浏览源代码,管理...

wzlinux
2017/10/22
0
0
撤销git add操作

使用Git的时候,有时候不小心使用git add,添加了不想追踪的文件。也就是track了一些不想track的文件,这个时候需要撤销操作,怎么处理呢? Git 文件状态的生命周期 演示 还原操作 使用git r...

Real_man
01/08
0
0
Python实现-Git日志统计分析工具

Python实现的一个小工具,用于分析Git commit log,获得Git Project每个成员的简单行为数据。 Warning:代码量不能代表程序员能力水平! 启动参数 共5个。 Repo地址 Commit 起始日期 Commit...

爱柚子的陈同学
2017/12/14
0
0
GitLab基础命令 使用日志

6月进入新公司,公司用的GitLab进行代码托管。对于我这种半路出家的程序员,终端操作一直感觉是恶梦,虽然很多都是基本而且简单的命令,但本能有一种对非可视化操作的抗拒。但抗拒归抗拒,该...

阿元
2015/07/11
394
0
为什么要有Git add 命令

不知道大家在学习Git的过程中,有没有想过一个问题,就是为什么要有git add 命令. 当一个文件被我们add过后,每次commit前还是需要git add,为什么不像svn那样只用add一次,以后在也不用add...

我是偶哦
2016/05/20
30
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

内存模型是怎么解决缓存一致性的?

在再有人问你Java内存模型是什么,就把这篇文章发给他。这篇文章中,我们介绍过关于Java内容模型的来龙去脉。 我们在文章中提到过,由于CPU和主存的处理速度上存在一定差别,为了匹配这种差距...

Java填坑之路
16分钟前
1
0
vue-cli 3.0 初体验

最近复习了下vue,突然发现vue-cli已经更新到3.0版本了,并且变化蛮大,看来要不停的学习,真是一入前端深似海。 安装步骤: 1、全局安装 npm install -g @vue/cli Vue CLI 的包名称由 vue-...

tianyawhl
17分钟前
0
0
Angular进阶之路

【初级】会写页面,能出东西。 给定环境和 rest API,不用第三方库,能在十分钟内完成一个 master/detail 结构的带路由的应用(可以不管美观)。 知识点:Angular CLI、组件、路由、HTTP 服务...

陆小七的主页
20分钟前
0
0
Redis缓存数据库安全加固指导(一)

背景 在众多开源缓存技术中,Redis无疑是目前功能最为强大,应用最多的缓存技术之一,参考2018年国外数据库技术权威网站DB-Engines关于key-value数据库流行度排名,Redis暂列第一位,但是原生...

中间件小哥
20分钟前
0
0
百万级数据mysql分区

1. 什么是表分区? 表分区,是指根据一定规则,将数据库中的一张表分解成多个更小的,容易管理的部分。从逻辑上看,只有一张表,但是底层却是由多个物理分区组成。 2. 表分区与分表的区别 分表...

罗文浩
23分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部