Git 总结

Git

目录

[隐藏]
  • 1版本控制守则
  • 3本地代码库管理
    • 3.1让git使用你的用户名来标记每次commit
    • 3.2在当前目录初始化一个代码库
    • 3.3把所有文件加入版本控制
    • 3.4commit所有修改过的文件
    • 3.5扔掉对代码库所做的修改,恢复到HEAD版本
    • 3.6恢复文件到之前提交的某一个版本
    • 3.7创建一个分支
    • 3.8切换到一个分支
    • 3.9切换回主分支
    • 3.10命令行提示符脚本
  • 4操作远程代码库
    • 4.1使用git协议共享本地代码库
    • 4.2复制一个远程代码库
    • 4.3从远程代码库上的主分支获取最新的代码
    • 4.4将本地代码库的修改传给远程代码库
    • 4.5在远程代码库创建一个分支
    • 4.6在本地关联一个远程库的分支
  • 5git基本工作流程
    • 5.1创建帐号
    • 5.2开始工作
    • 5.3本地修改和提交
    • 5.4从中央服务器获取其他人的更新
    • 5.5向中央服务器发送本地的修改
  • 6git与SVN协同的工作流程
    • 6.1从SVN服务器获取代码
    • 6.2创建一个本地分支
    • 6.3日常修改和提交
    • 6.4切回master从SVN获取最新代码
    • 6.5master同步后,与工作分支合并
    • 6.6合并主分支

[编辑]版本控制守则

  • 不要提交垃圾文件。包括临时文件,编译产生的二进制文件,个人设置文件,系统cache,与项目无关的文件等等。使用.gitignore文件来告诉git哪些文件应该忽略掉。
  • 不要提交不能编译运行的代码到master分支。平时创建临时分支来工作,可以随时提交,当告一段落之后再合并到master分支。保证master分支的代码是可运行的,这样不会给团队中的其他人带来不必要的影响。
  • 善用分支。可以每开始一个新功能时就创建一个新分支,改完后合并到master。每个新版本也要用一个新分支,这样如果需要改老版本的bug,那么可以很轻松地切换到老分支,改完后再切回新分支。
  • 多提交,及时提交。每当改动达到可以用一句话描述的时候,就提交。
  • 一定要写清楚提交注释,写明做了哪些修改,不要用笼统的一句话例如“改bug”,而是要写具体的说明例如,“按钮文字从转发改成分享”。
  • 每个准备提交上线的版本要打tag,命名成v1.0.0_rc1这种格式,第一次提交就是rc1,第二次提交就是rc2等等。

[编辑]git代码库

[编辑]请求代码

$ git clone ssh://%%%%.git
$ git clone ssh://%%%%%%.git


[编辑]本地代码库管理

[编辑]让git使用你的用户名来标记每次commit

$ git config --global user.name "zhengyue"
$ git config --global user.email zhengyue@magus-soft.com

[编辑]在当前目录初始化一个代码库

$ git init

[编辑]把所有文件加入版本控制

$ git add .

[编辑]commit所有修改过的文件

$ git commit -a

[编辑]扔掉对代码库所做的修改,恢复到HEAD版本

$ git checkout -f
或
$ git reset --hard

[编辑]恢复文件到之前提交的某一个版本

$ git log                        ## 列出所有提交过的版本,注意每个版本有一个很长的16进制字符串做为ID
$ git checkout abcde filename    ## 提取出ID为abcde的版本中的某个文件,覆盖掉当前的本地文件。

注:ID字符串不用写全,只要写前几位即可,一般写出5位就不会有重复的了。

[编辑]创建一个分支

$ git branch test

[编辑]切换到一个分支

$ git checkout test

[编辑]切换回主分支

$ git checkout master

[编辑]命令行提示符脚本

把下面的脚本放到 ~/.profile 或者 ~/.bashrc 里,命令行的提示符即会显示出当前的git分支名称。例如:~/Projects/cmb (master) $

function parse_git_branch {
      ref=$(git symbolic-ref HEAD 2> /dev/null) || return
        echo "("${ref#refs/heads/}")"
}

PS1="\w \$(parse_git_branch)\$ "

[编辑]操作远程代码库

[编辑]使用git协议共享本地代码库

git本身带了一个服务器命令,启动后,其他机器可以用git协议访问本机的代码库。

$ git daemon --export-all --base-path=/home/pub/projects/ test.git

注意:

  • 如果返回"fatal: no matching remote head",说明代码库里没有文件或者没有commit过。
  • 在.git目录下应该有git-daemon-export-ok这个文件,否则必须使用export-all参数来强制共享
  • 如果允许远程提交代码,需要加上 --enable=receive-pack 参数

[编辑]复制一个远程代码库

$ git clone git://10.150.150.136/test.git test

[编辑]从远程代码库上的主分支获取最新的代码

第一次:

$ git pull git://10.150.150.136/test.git master
或
$ git pull ssh://10.150.150.136/test.git master

以后:

$git pull origin master
  • 相当于svn update

[编辑]将本地代码库的修改传给远程代码库

如果是提交到master分支:

$ git push origin master
  • 警告:远程代码库应该是一个空的bare库,否则会搞乱working copy!!如果working copy是干净的,可以使用git checkout -f来同步代码库。如果已经做了修改,则就没有很好的办法恢复同步状态了!

[编辑]在远程代码库创建一个分支

有时候在本地创建的分支希望分享到远程代码库的分支里,下面命令会在远程创建一个名为branch的分支,并且和本地的branch分支关联起来

$ git push origin branch

以后,即可使用 git push 来分享代码到远程库。

[编辑]在本地关联一个远程库的分支

有时候需要在本地获取一个远程分支,使用这个命令:

$ git branch --track origin/branch

以后即可使用 git pull 来获取远程的更新

[编辑]git基本工作流程

git支持很多种不同的工作流程,我们采用的是与SVN接近的模拟中央服务器流程。即,有一个公用的代码库放在服务器上,开发者从这个共享的服务器克隆后,在本地开发,然后提交到服务器,并且从服务器获取其他用户提交的内容。

  • 注意:git是分布式的代码控制系统,所以每个代码库都是平等的,这里只是在逻辑上划分了一个中央服务器而已,在物理结构上,中央代码库与本地代码库没有什么不同。

[编辑]创建帐号

git可以使用多种协议在代码库之间通信。我们目前采用ssh协议,需要用户在服务器上有一个ssh帐号才能访问代码库。用户需要在本机创建一个ssh密钥对,把公钥发给管理员,密钥保存在自己本机。这样,就可以使用密钥连接服务器。

[编辑]开始工作

开始工作之前,需要复制一套中央服务器的代码库:

$ git clone /server/repo/project

[编辑]本地修改和提交

git的提交操作是在本地完成的,不需要网络连接。

$ git checkout branch
--- 编辑现有文件或者添加新文件 ...
$ git add newfile
$ git commit -a
--- 填写此次提交的备注

[编辑]从中央服务器获取其他人的更新

这个操作实际是执行了获取更新,并且与本地代码合并两个操作。因为有可能2人改了同一个地方,所以这里有可能会出现冲突的情况。出现冲突时,需要手工合并代码。

$ git pull

[编辑]向中央服务器发送本地的修改

这个操作是把本地的所有新的commit历史都提交到服务器

$ git push

[编辑]git与SVN协同的工作流程

git可以和SVN服务器一起使用,即,中央服务器采用svn,本地代码库使用git。这样的好处是,可以兼容以前的项目,同时本地有一套完整的版本控制系统,可以随时查看代码修改历史,随时提交,不需要网络。合适的时候再提交到SVN服务器。git-svn的工作流程也有很多,我们推荐使用下面这种方式。

[编辑]从SVN服务器获取代码

$ git svn clone http://svnserver/project/trunk

[编辑]创建一个本地分支

为了方便合并,减少不必要的麻烦,最好保持主分支master不变,在一个新的分支进行日常工作

[编辑]日常修改和提交

与git的工作流程完全一样

$ git checkout -b work
... 编辑 ...
$ git commit -a

[编辑]切回master从SVN获取最新代码

$ git checkout master
$ git svn rebase

[编辑]master同步后,与工作分支合并

$ git checkout work
$ git rebase master     ## 手工解决可能的冲突

[编辑]合并主分支

$ git checkout master $ git merge work

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值