Chinaunix首页 | 论坛 | 博客
  • 博客访问: 451885
  • 博文数量: 121
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1101
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-20 19:29
个人简介

http://meetbill.github.io/

文章分类

全部博文(121)

我的朋友

分类: 项目管理

2015-08-15 20:31:40

Centos6.5下git使用

基本功能

1、创建Github账号,
2、Linux创建SSH密钥:
[执行命令] view plaincopy
  1. ssh-keygen  ##一直默认就可以了  
3、将公钥加入到Github账户信息Account Settings->SSH Key
     tiltle中填写上名字后,
     在key框中,将linux系统里主目录的.ssh/id_rsa.pub 文件中的内容全部复制到key框中即可

4、测试验证是否成功。
[执行命令] view plaincopy
  1. ssh -T git@github.com  
  2. Hi [YourGithub账号]! You've successfully authenticated, but GitHub does not provide shell access.  

同步github到本地
1、复制项目到本地:
[执行命令] view plaincopy
  1. git clone git://github.com:xxxx/test.git ##以gitreadonly方式克隆到本地,只可以读  
  2. git clone git@github.com:xxx/test.git  ##以SSH方式克隆到本地,可以读写  
  3. git clone /xxx/test.git ##以https方式克隆到本地,可以读写【常用】  
  4. git fetch git@github.com:xxx/xxx.git  ##获取到本地但不合并  
  5. git pull git@github.com:xxx/xxx.git ##获取并合并内容到本地

本地提交项目到github
1、本地配置
[执行命令] view plaincopy
  1. git config --global user.name 'onovps'  
  2. git config --global user.email 'onovps@onovps.com' #全局联系方式,可选  
2、新建Git项目并提交到Github。
[执行命令] view plaincopy
  1. mkdir testdir & cd testdir  
  2. touch README.md  
  3. git init #初始化一个本地库  
  4. git add README.md #添加文件到本地仓库  
  5. git rm README.md #本地倒库内删除  
  6. git commit -m "first commit" #提交到本地库并备注,此时变更仍在本地。  
  7. git commit -a  ##自动更新变化的文件,a可以理解为auto  
  8. git remote add xxx git@github.com:xxx/xxx.git  #增加一个远程服务器的别名。xxx/xxx.git就是用户名/项目名.git   
  9. git remote rm xxx   ##删除远程版本库的别名  
  10. git push -u remotename master #将本地文件提交到Github的remoname版本库中。此时才更新了本地变更到github服务上。  
小tip
进入到git项目名中
添加远程服务器为本目录名
git remote add ${PWD##*/} git@github.com:BillWang139967/${PWD##*/}.git
讲本地文件提交到github的remoname版本库中
git push -u ${PWD##*/} master

分支版本操作
1、创建和合并分支
[执行命令] view plaincopy
  1. git branch #显示当前分支是master  
  2. git branch new-feature  #创建分支  
  3. git checkout new-feature  #切换到新分支  
  4. vi page_cache.inc.php  
  5. git add page_cache.inc.php  
  6. git commit -a -m "added initial version of page cache"  
  7. git push origin new-feature  ##把分支提交到远程服务器,只是把分支结构和内容提交到远程,并没有发生和主干的合并行为。  
2、如果new-feature分支成熟了,觉得有必要合并进master

[执行命令] view plaincopy
  1. git checkout master  #切换到新主干  
  2. git merge new-feature  ##把分支合并到主干  
  3. git branch #显示当前分支是master  
  4. git push  #此时主干中也合并了new-feature的代码  


常用功能


1 版本回退

当我们修改了一次文件后,比如我们修改mygit.txt,下面咱对它进行修改,内容如下:

[README] view plaincopy
  1. # shell_wheel  
  2. The shell framework, the purpose is convenient debugging shell program
  3.  
  4. very convenient 
上面中的very convenient是新增加的内容

然后使用git status命令来跟踪该文件的状态


[显示内容] view plaincopy
  1. [root@Linux shell_wheel]# git status;
  2. # On branch master
  3. # Changed but not updated:
  4. #   (use "git add ..." to update what will be committed)
  5. #   (use "git checkout -- ..." to discard changes in working directory)
  6. #
  7. # modified:   README.md
  8. #
  9. no changes added to commit (use "git add" and/or "git commit -a")


可以看到README.md已经被修改过了,到底这次修改的内容与上次的内容有什么不同的,咱们可以使用git diff查看(若想退出当前状态不再看下去,按下Q键即退出;其他退出亦同。):

[显示内容] view plaincopy
  1. [root@Linux shell_wheel]# git diff
  2. diff --git a/README.md b/README.md
  3. index e76dbbd..fc838f6 100644
  4. --- a/README.md
  5. +++ b/README.md
  6. @@ -1,2 +1,4 @@
  7.  # shell_wheel
  8.  The shell framework, the purpose is convenient debugging shell program
  9. +
  10. +very convenient


当然你也可以查看上次提交的信息,使用git log:
这里就不贴输出信息了

该文件还处于工作区,因此我们又可以使用add、commit操作了:

[执行命令] view plaincopy
  1. git add README.md



[显示内容] view plaincopy
  1. [root@Linux shell_wheel]# git add README.md 
  2. [root@Linux shell_wheel]# git commit -m "[update]"
  3. [master 5faae87] [update]
  4.  1 files changed, 2 insertions(+), 0 deletions(-)


提交完后咱再用git status来跟踪一下(建议多使用git status)状态:

这里依然是:Git告诉咱们当前没有需要提交的修改,而且工作目录是干净的。

下面再学一个命令:git reflog,它主要用来记录你的每一次命令和commit id,这个命令非常有效,也建议大家常用。

[显示内容] view plaincopy
  1. [root@Linux shell_wheel]# git reflog
  2. 5faae87 HEAD@{0}: commit: [update]
  3. e795c70 HEAD@{1}: commit: [update]
  4. 358e98b HEAD@{2}: commit: [init]
  5. 5032b89 HEAD@{3}: clone: from /BillWang139967/shell_wheel.git



可以看到咱提交的id号和提交的message被显示出来了。

加入你现在不想修改了,想回到原来那个版本,该怎么办呢?别急,这一点Git早就帮我们想好了,使用git reset --hard HEAD^

注意:这里HEAD上面^表示回到上一个版本,如果想回到前面第五个版本呢?我们可以用git reset --hard HEAD~5,当然因为我们这里只修改了1次,所以我们最多只能回到前面一个版本。打开README.md看看,是内容不是Hello Git呢?得意当然如果你又想修改回去,那么咱们还有办法,
用git reset --hard commit-id

[显示内容] view plaincopy
  1. [root@Linux shell_wheel]# git reset --hard 5faae87
  2. HEAD is now at 5faae87 [update]


注意:这里的5faae87指的是commit id,上面已经说了,这里就不再赘述。
2版本回退


git checkout -- file可以丢弃工作区的修改:

命令git checkout -- readme.txt意思就是,把修改的文件文件在工作区的修改全部撤销,然后在查看状态:
git status

工作目录会变回”clean“,查看修改的文档的内容
内容又改回来了,这样就完成了一次简单的修改撤销。

其他功能


1更新fork的代码

(1)前提

本文的前提是你已经在github上fork了别人的分支,并且弄好了跟github的ssh连接。
相关配置详情参考:

(2)详细操作

  1. 检出自己在github上fork别人的分支到本目录下
    git clone /BillWang139967/xxxxx.git
  2. cd xxxxx(项目名)
  3. 然后增加远程分支(也就是你fork那个人的分支)名为bob(这个名字任意)到你本地。
    git remote add bob /new/xxxxx.git
    如果你运行命令:git remote -v你会发现多出来了一个Bob的远程分支。如下:
  4. 然后,把对方的代码拉到你本地。
    git fetch bob
  5. 最后,合并对方的代码。
    git merge bob/master
  6. 最后,把最新的代码推送到你的github上。
    git push origin master

这样就完成了自己的代码更新。


阅读(2073) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~