[翻译]中级Git用户的25个使用技巧(上)

译者:zhanhailiang 日期:2015-01-17

原文链接:25 Tips for Intermediate Git Users

基本技巧

1. 安装git后,需要配置用户名和邮箱:

$ git config --global user.name "Some One"
$ git config --global user.email "[email protected]"

2. git是基于指针的

git中的一切都以文件形式存储,举例:

  1. 每创建一次提交动作,git其实将创建一个文件(.git/refs),其中包含提交注释和相关信息(用户名,邮箱,时间,之前的提交等),并将其与一个树结构文件(.git/objects)关联。这个树结构文件包含对象列表。这些对象或块就是实际提交的修改内容。这些对象以SHA-1哈希命名。
  2. 在git中,branch,tags也是以文件存储(.git/refs/heads),其中存储的是指向当前提交的哈希值。
  3. HEAD(.git/HEAD)也是一个包含指向当前分支提交的哈希值的文件。

3. Two Parents

在git中查看合并提交信息,你将看到Two Parents,其中第一个Parent指向当前分支,第二个Parent指向你想合并的分支。

4. 合并冲突

和svn一样,当遇到合并冲突,需要手动修改<<<<, ====, >>>>部分的内容。

$ git diff --merge
diff --cc dummy.rb
index 5175dde,0c65895..4a00477
--- a/dummy.rb
+++ b/dummy.rb
@@@ -1,5 -1,5 +1,5 @@@
  class MyFoo
    def say
-     puts "Bonjour"
 -    puts "Hello world"
++    puts "Annyong Haseyo"
    end
  end

服务器,分支,标签

5. 远程服务器

git中最重要的特性之一是可以支持分布式仓库,从而避免SVN中心式的弊端。你可以在本地汪厍多个读远程服务器,也可以添加多个写远程服务器。

$ git remote add john [email protected]:johnsomeone/someproject.git

如果想获取远程服务器信息,如下:

# shows URLs of each remote server
$ git remote -v 

# gives more details about each
$ git remote show name

也可以通过以下命令获取本地分支和远程分支的区别:

$ git diff master..john/master

也可以查看本地HEAD的修改:

$ git log remote/branch..
# Note: no final refspec after ..

6. 标签

git支持两种类型的标签:

  1. 一个指向某个提交的指针;

    $ git tag to-be-tested

  2. 一个指向标签对象的指针,其包含自身信息和历史。

    $ git tag -a v1.1.0 # Prompts for a tag message

7. 创建分支

$ git branch feature132
$ git checkout feature132

等价于:

$ git checkout -b feature132

8. 合并分支

$ git checkout master
$ git merge feature83 # Or...
$ git rebase feature83

合并分支分为merge和rebase两种方式:

  1. merge tries to resolve the changes and create a new commit that blends them.
  2. rebase tries to take your changes since you last diverged from the other branch and replay them from the HEAD of the other branch.

可以通过以下命令查看哪些分支包含独立的修改:

# Shows branches that are all merged in to your current branch
$ git branch --merged

# Shows branches that are not merged in to your current branch
$ git branch --no-merged

9. 远程分支

提交本地当前分支修改到远程服务器:

$ git push origin twitter-experiment:refs/heads/twitter-experiment
# Where origin is our server name and twitter-experiment is the branch

删除远程服务器的分支:

$ git push origin :twitter-experiment

查看所有远程分支的信息:

$ git remote show origin

待续......

时间: 2024-12-23 23:45:01

[翻译]中级Git用户的25个使用技巧(上)的相关文章

[翻译]中级Git用户的25个使用技巧(下)

译者:zhanhailiang 日期:2015-01-21 原文链接:25 Tips for Intermediate Git Users 存储内容到Stashes, Index和文件系统 10. 暂存区 丢弃暂存区的所有操作: $ git stash # Do something... $ git stash pop 11. 交互式添加修改到暂存区 $ git add -i staged unstaged path *** Commands *** 1: status 2: update 3:

git 服务器搭建,在自己服务器上搭建私有仓库

创建一个简单的私人Git版本控制服务器,首先得有个服务器(屁话).这种方式适合人比较少的情况,管理不需要很复杂,只要增加几个账号就能搞定. 如下面的情况,有一个服务器,两个客户端. 服务器:Debian7.5 (192.168.10.14) 用 户:git (git-shell) 仓 库:sample.git 地 址:[email protected].168.10.14:/home/git/sample.git 客户端:Mac mymac.pub(mac git公钥) win7 mywin.p

如何通过Git GUI将自己本地的项目上传至Github

githud是一个程序员以后成长都会使用到的,先不说很多优秀的开源框架都在这上面发布,光是用来管理自己的demo都已经让人感到很方便,用得也很顺畅.而真正让我下定决心使用github的原因是因为两次误操作,将自己所有的学习demo全都删除,而且由于数据太大,是彻底删除的那种,使用数据恢复软件,但然并卵,恢复的数据杂乱无章,另一次是由于自己的固态损坏,所有的东西也全没了,终于痛下决心好好研究github的使用. 在上面的原因之下,花了一天的时间来研究github,一下是一天来的学习成果. 1.至于

maven-jetty-plugin保存文件报错:请求的操作无法在使用用户映射区域打开的文件上执行

使用jetty-maven-plugin 在eclipse中进行运行调试,碰到无法编辑保存webapp下的文件 提示:请求的操作无法在使用用户映射区域打开的文件上执行 解决方法: 从 jetty 7 开始,jar存放在maven仓库中的路径为org/eclise/jetty/jetty-webapp 打开对应的版本的jar包修改jar中的org/mortbay/jetty/webapp/webdefault.xml文件 Java代码 <init-param> <param-name>

针对高级用户的 Vim 编辑实用技巧

导读 毫无疑问, Vim 是一个很强大的文本编辑器.它提供了大量的特性,这意味着学习并记住 Vim 的所有功能实际上是不可能的.但是我们至少可以不断学习简单的方法来完成事情,从而随着时间的增长,我们使用编辑器的经验将会变得更好. 这篇文章是 Vim 用户指南系列文章中的一篇: Vim 初学者入门指南 Vim 快捷键速查表 5 个针对有经验用户的 Vim 技巧 3 个针对高级用户的 Vim 编辑器实用技巧 请记住,在这篇文章中我们将讨论的一些 Vim 编辑器技巧是针对高级用户的.注:如果你是第一次

git入门学习(二):新建分支/上传代码/删除分支

一.git新建分支,上传代码到新的不同分支 我要实现的效果,即是多个内容的平行分支:这样做的主要目的是方便统一管理属于同一个内容的不同的项目,互不干扰.如图所示: 前提是我的github上已经有webpack_test项目了,我是在这个项目的基础上新建其他的分支并开展工作的.如图: 如果你对如何新建webpack_test项目不清楚,请参考我的前一篇文章:git入门学习(一):github for windows上传本地项目到github,操作步骤如下: 1.1.保留webpack_test项目

[git] git合并冲突 本地已有项目上传

git... 讲道理 我现在能隐约感觉到他的强大控制能力了 但是依旧是不习惯.... 无论是什么操作 在我这里都会出问题,,,, 上传本地已有的项目到码云 首先需要现在码云创建一个仓库 然后用git工具在命令行下切换到项目下面 通过git init初始化项目为一个git项目 通过git add .把所有的文件放到暂存区 (如果发现缺少文件的话 注意看看.gitignore文件 如果是thinkphp项目 就默认忽略thinkphp文件夹) git commit -m "说明" 提交到本

赶紧的,用户已经打电话来投诉线上出问题了

出bug了 如标题所示,用户资金获取失败,线上某个服务通过dubbo调用接口都返回异常. 赶紧连上服务器看日志,进去一看吓到了. Cause: java.sql.SQLException: connection holder is null ; uncategorized SQLException for SQL []; SQL state [null]; error code [0]; connection holder is null; nested exception is java.sq

Git 中级用户的25个小贴士

原文链接:25 Tips for Intermediate Git Users 作者:Andy Jeffries 时间:2009年11月1日 更新:这篇文章最初是在 2009年11月 发布到我的博客,它一直没有更新--不过有许多人发现这篇文章很有用,所以我想保持下去.请不要评论说"这些已经不再是中级小贴士了". 我使用 git 大约 18 个月了,以为自己已经比较了解 git 了.但当我们请 GitHub 的 Scott Chacon 来 LVS 公司(博彩/游戏软件开发商)做一些培训