Linux 服务器上安装git

yum -y install git

git config  --global user.name "name"

git config  --global user.email "email"

globa 参数表示这台机器上所有仓库都会使用这个配置,当然也可以对指定仓库使用指定的配置

创建仓库的两种方法:

普通 仓库       git init
裸库 git init --bare

两者的区别参见 https://segmentfault.com/q/1010000004683286/a-1020000004684114

当创建普通库时,除了 .git目录之外,你还可以看到库中所有所包含的所有源文件,拥有了一个可以浏览,修改的本地库(add,commit.delete)

一般来说,一个裸库往往被创建用于 作为大家一起工作的共享库,每个人都可以往里面 push 自己的本地修改,一个常用的方式是在库名后面加上 .git

git status  查看当前仓库的状态
git diff 查看修改的内容
git commit 提交
git log 提交历史记录
git reflog 历史命令
git reset --hard HEAD^ 文件回退
git reset --hard 23134(版本号前面几位)

在进行版本回退额时候 执行 git reset  --hard  12312后,现在又后悔了,想要回到最新的状态  实行 git reflog 看到最新的一次提交的commit id 执行  get reset --hard lastid 即可回到最新状态

git chekout -- text.txt  丢弃工作区的修改 ,这让个文件回到了最近一次 commit 或 add 时 的状态

文件的删除

git rm  filename    然后git commit 
 git push origin master
如果手动删除文件 rm -rf 1.txt 后想恢复文件 git checkout -- 1.txt 从版本库中将文件恢复

git  checkout 会用版本库里的版本替换工作区中的版本,无论工作去是修改还是删除,都可以一键还原。

关于分支。

查看现在在哪个分支  git branch
创建分支 git branch name
切换到某分支 git checkout name
创建并切换到某分支 git checkout -b name
合并某分支到当前分支 git merge name
删除分支 git branch -d name 切换到a分支后,是看不见在b分支修改创建的文件,合并分支后是可以看见的
将工作现场储藏   git stash
查看工作现场 git stash list 恢复现场的两种方法
1 git stash apply 恢复后stash内容并不删除,需要通过git stash drop 来删除
2 git stash pop 恢复的同时把 stash 内容也删了

通过git remote 查看远程库的信息 git remote -v 显示更详细的信息

多人分支合作分工

使用 git push origin branch branchname 推送自己的修改
如果推送失败,则因为远程分支比你的本地分支要新,使用git pull 合并
如果合并有冲突,则解决冲突,并在本地提交
没有冲突或者解决掉冲突后,再用 git push origin branch branchname推送就能成功
如果 git pull 提示" no tracking information" 说明本地分支和远程分支没有链接关系
使用 git branch --set-upstream branch-name origin/branch-name

git config --list 查看git 的配置情况

一个git 服务器的搭建

参考链接 http://www.cnblogs.com/dee0912/p/5815267.html

git init --bare gittest.git   创建一个裸仓库 (裸仓库没有工作区)

在 hooks底下创建一个文件   post-receive

内容为

#!/bin/bash
git --work-tree=/home/www checkout -f

chown git:git  post-reveive

chmod a+x post-receive

地址就是 git@ip:/home/dir/git.git

客户端每次 git clone 和pull 都要  输入密码

讲客户端的密钥 放在 服务器上进行认证

服务器配置

RSAAuthentication yes
PubkeyAuthentication yes

AuthorizedKeysFile .ssh/authorized_keys

重启sshd服务

service sshd restart

在git 用户目录下 新建 .ssh 目录

将客户端公钥文件写入authorized_keys

chmod 600   authorized_keys

chmod 700 .ssh

在windows 的git gui  执行 git clone 看是否能克隆仓库

修改文件 推动到主分支,看post_receive内的checkout 目录有无变化

如果出现仍然输入密码之类的,检查密钥文件等的权限和所有者

Git 命令及git服务器的更多相关文章

  1. 每日一条 Git 命令:git merge remote master

    每日一条 Git 命令:git merge remote master 当远程的分支更新后,需要将自己的代码与远程的分支合并就用以下这个命令合并. git merge remote master 如果 ...

  2. git命令之git rebase 的用法

    rebase 假设你现在基于远程分支"origin",创建一个叫"mywork"的分支. $ git checkout -b mywork origin 现在我 ...

  3. git命令之git remote的用法

    git remote git  remote -v git init git add xxx git commit -m 'xxx' git remote add origin ssh://softw ...

  4. 第23月第24天 git命令 .git-credentials git rm --cached git stash clear

    在git push的时候,有时候我们会想办法撤销git commit的内容 1.找到之前提交的git commit的id git log 找到想要撤销的id 2.git reset –hard id ...

  5. git命令之git clone用法

    在使用git来进行版本控制时,为了得一个项目的拷贝(copy),我们需要知道这个项目仓库的地址(Git URL). Git能在许多协议下使用,所以Git URL可能以ssh://, http(s):/ ...

  6. [转]git命令之git remote的用法

    git remote git  remote -v git init git add xxx git commit -m 'xxx' git remote add origin ssh://softw ...

  7. git命令之git tag 给当前分支打标签

    git tag - 标签相关操作 发表于 2011年06月29日 由 机器猫 标签可以针对某一时间点的版本做标记,常用于版本发布. 列出标签 $ git tag # 在控制台打印出当前仓库的所有标签$ ...

  8. git命令之git stash 暂存临时代码

    git stash — 暂存临时代码   stash命令可以很好的解决这样的问题.当你不想提交当前完成了一半的代码,但是却不得不修改一个紧急Bug,那么使用’Git stash’就可以将你当前未提交到 ...

  9. git命令之git mergetool vi非正常退出.swp删除不了的问题

    1.git   pull命令产生无法merge的错误 使用了 git  mergetool命令然后...傻逼了 进入了vi操作界面,不会操作,非正常退出... 然后就产生了.swp相关文件,死活删除不 ...

随机推荐

  1. ISP PIPLINE(零) 知识综述预热之光学概念篇

    1.光学成像关系如下:这是我看到最清晰的易懂的数学关系图 2.上面的知识了解完,camera应用的知识就是Autofocus技术,自动对焦 马达的起始位置一般在焦距处,由上面光学数学关系可知,焦距处可 ...

  2. HBuilder 的使用

    创建一个nui项目 打开index.html才能运行 查看夜神模拟器 创建App标题:mhe :在body中输入mhe让后回车,如果右侧不显示,Ctrl+s保存一下 创建标题:mhe 创建九宫格:mb ...

  3. buffer格式的转换

    ---恢复内容开始--- 定义好一个buffer 例如: var buf = new Buffer(''nihaoya); 通过str转成base64的字符 var str =buf.toString ...

  4. Java Base64 加解密

    public class base64EncryAndDecry { public static final String CODES = "ABCDEFGHIJKLMNOPQRSTUVWX ...

  5. __x__(42)0910第六天__表格布局 老旧的布局方法

    table 布局 不易于维护,耦合太严重了. 不利于搜索引擎检索. 效果图: html代码: <!doctype html> <html> <head> <m ...

  6. Java课程课后作业190315之最大连续子数组(二维数组版)

    ,, 在本周的课堂上,老师再一次提高了要求,将一维数组升级成为了二维数组,然后求出块状的连续子数组. 一开始还想着借鉴之前球一维数组的O(n)的算法,后来还是没有找到头绪,舍友讲了自己的办法,但是没有 ...

  7. 论Photoshop的正确安装姿势

    Adobe Photoshop 俗称 PS 专业的平面设计软件之一,是Adobe公司最最最牛逼的软件之一.入门很容易,但是想掌握高超的修图,仅靠后天99%的努力是没用的,设计这个东西,讲到底需要的是灵 ...

  8. Java第四次实践作业

    1 编写“电费管理类”及其测试类.  第一步 编写“电费管理”类 1)私有属性:上月电表读数.本月电表读数 2)构造方法:无参.2个参数 3)成员方法:getXXX()方法.setXXX()方法 4 ...

  9. [dev][crypto][strongswan] 有关strongswan的forward policy的源码分析

    一 默认情况下,我们使用strongswan建立了一个ipsec隧道之后,建立的policy如下: [root@D129 OUTPUT]# ip xfrm policy src dst dir pty ...

  10. rand和srand的用法

    首先我们要对rand&srand有个总体的看法:srand初始化随机种子,rand产生随机数,下面将详细说明. rand(产生随机数)表头文件: #include<stdlib.h> ...