程序猿不得不会的git常用基础&日常用的git命令及使用原理

10 篇文章 0 订阅
4 篇文章 0 订阅

起步

原理

git使用的是一种分布式的版本控制结构,通过记录文件快照来实现。

 

Git仓库之间关系

拼团砍价秒杀俱全免费迭代的开源系统

运行前配置

用户信息(必须)

参数说明文件目录
git config --system对应系统的所有用户的配置/etc/gitconfig文件
git config --global用户目录下的配置~/.gitconfig
git config当前git目录的配置.

  
  
  1. git config --global user.name "shuihan"
  2. git config --global user.email lxq_xsyu@163.com

 

 

用户名称和电子邮箱,git每次提交的时候都会引用这两条信息,说明是谁提交了代码。

默认编辑器

git config --global core.editor emacs
  
  

差异分析工具 

git config --global merge.tool vimdiff
  
  

查看配置信息

git config --list
  
  

获取帮助

git help <verb>
  
  

 例如,config 命令可以使用 git help config

基础

获取仓库

创建新仓库: git init

初始化后,当前目录下就会多出一个.git的目录,所有git需要的数据和资源都存放在这个目录中。


  
  
  1. git add *.java
  2. git commit -m "init project"

 克隆仓库: git clone

git clone git://github.com/test/gittest.git
  
  

这样默认目录会是gittest,如果要更改目录名称可以追加在后面。 

git clone git://github.com/test/gittest.git newname
  
  

检查文件状态

git status

查看文件变化

暂存前: git diff 暂存后: git diff --cached

跳过暂存区 -a

git commit -a -m "跳过暂存区提交"
  
  

移除文件

git rm 文件名

如果只想删除仓库中的文件(也会从暂存区移除)但任然保留工作区文件,可以使用 git rm –cached 文件名(比如删除不小心纳入仓库的需要忽略的文件)

移动文件

git mv file_from file_to
  
  

查看提交历史

git log

git log 有许多可选项帮助搜寻感兴趣的提交:

显式文件提交的内容差异: git log -p -2 //-2表示仅仅显式最近的两次更新

显式文件提交的内容差异(单词层面比较):git log -p -word-diff -2

修改最后一次提交

有时候我们提交完了,但是发现漏掉了几个文件,或者提交信息写错了,想要撤销刚才的提交,可以使用–amend 追加提交暂存区

git commit --amend

取消暂存的文件

git reset HEAD 暂存区文件名

取消对文件的修改

git checkout -- 已经修改的文件名

查看远程仓库

git remote -v

添加远程仓库

git remote add [shortname] [url] 


  
  
  1. $ git remote
  2. orign
  3. $ git remote add pb git: //github.com/pp/ppt.git
  4. $ git remote -v
  5. orgin git: //github.com/test/gittest.git
  6. pb git: //github.com/pp/ppt.git

此时,本地仓库没有pb的信息,可以使用 git fetch pb

修改远程仓库

git remote set-url [shortname] [url]


  
  
  1. $ git remote rm origin
  2. $ git remote add origin https:/ /gitee.com/jouypub /json.git

从远程仓库抓取数据

git fetch [remote-name]

推送数据到远程仓库

git push origin master

查看远程仓库信息

git remote show origin

远程仓库删除和重命名


  
  
  1. $ git remote rename pb paul
  2. $ git remote
  3. orgin
  4. paul

删除远程仓库可以使用 git remote rm


  
  
  1. $ git remote rm paul
  2. $ git remote
  3. orgin

打标签

显示已有标签

git tag

可以使用通配符检索

git tag -l 'v1.2.*'
  
  

新建标签

git使用的标签有两种:轻量级的和含附注的。

创建轻量级标签:

git tag v1.3.1

创建一个含附注的标签,用 -a

$ git tag -a v1.3.0 -m "这是版本1.3.0"
  
  

可以使用show命令查看相应标签的版本信息: git show v1.3.0

分享标签

默认情况下,git push 并不能把标签传送到服务器,要使用命令:git push origin [tagname]

$ git push origin v1.3.0
  
  

如果要把本地所有标签传送上去,可以使用 –tags

$ git push origin --tags
  
  

分支

分支的理解

假设此时我们的工作目录有三个文件,把它们暂存后提交。

第一步:暂存 git使用blob类型的对象存储了这些快照

第二步:提交


  
  
  1. git add *
  2. git commit -m "commit three files"

此时git仓库中有5个对象(三个文件快照内容的blob对象,一个记录着目录树内容及其各个文件对应blob对象索引的tree对象,一个指向tree对象的索引和其他提交信息数据的commit对象)

 

Git分支和目录树

第三步:多做几次修改再提交 后一次提交的commit对象会指向前一次提交的commit对象

 

Git分支和目录树Git分支和目录树

 

git中的分支实际上仅仅是一个指向commit对象的可变指针,git会使用master为分支的默认名字,每次提交后master(当前分支)都会自动向前移动。

 

Git分支和目录树

第四步:创建一个新分支

$ git branch testing
  
  

Git分支和目录树Git分支和目录树

 

那么git是如何知道你在哪个分支上工作呢?它保留着一个名为HEAD的特别指针。

 

Git分支和目录树Git分支和目录树

 

第五步:切换分支

$ git checkout testing
  
  

这样HEAD就指向了testing分支。

分支合并

使用命令 git merge 来合并分支

 

Git分支和目录树

Git分支和目录树


  
  
  1. $ git checkout master
  2. $ git merge hotfix
  3. Fast-forward

合并的时候出现了"Fast-forward"提示,因为此时只需要简单的将指针右移,这种合并称为快进(Fast Forward)

再来看一种情况:

 

Git分支和目录树

Git分支和目录树


  
  
  1. $ git checkout master
  2. $ git merge iss53

这种情况不可能简单的右移指针,会自动创建一个指向它的commit对象(如下图c6),如果有冲突需要合并冲突。

 

Git分支和目录树

Git分支和目录树

分支管理

git branch命令可以列出当前所有分支清单, 当前分支带 * 号


  
  
  1. $ git branch
  2. * master
  3. work

查看各个分支最后一个提交对象的信息: git branch -v

删除本地分支 git branch -d <branch-name> 删除远程分支 git push <remote-name> --delete <branch-name>


  
  
  1. $ git branch -d work
  2. $ git push origin --delete work

工作流程

Git flow

该流程中项目存在两个长期分支。

主分支: master (存放对外发布的版本,任何时候在这个分支拿到的,都是稳定的分布版) 开发分支: develop (用于日常开发,存放最新的开发版)

其次,项目存在三种短期分支。

功能分支(feature branch) 补丁分支(hotfix branch) 预发分支(release branch)

一旦完成开发,它们就会被合并进develop或master,然后被删除。

GitFlowGitFlow

 

关于Git的工作流其他请阅读 阮一峰 的博客,总结的很详细

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值