程序员人生 网站导航

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

栏目:综合技术时间:2015-01-20 08:32:46
译者:zhanhailiang 日期:2015-01⑴7

原文链接:25 Tips for Intermediate Git Users

基本技能

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

$ git config --global user.name "Some One" $ git config --global user.email "someone@gmail.com"

2. git是基于指针的

git中的1切都以文件情势存储,举例:

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

3. Two Parents

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

4. 合并冲突

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

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

服务器,分支,标签

5. 远程服务器

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

$ git remote add john git@github.com: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. 1个指向某个提交的指针;

    $ git tag to-be-tested

  2. 1个指向标签对象的指针,其包括本身信息和历史。

    $ 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

待续......

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐