185 lines
5.0 KiB
Bash
185 lines
5.0 KiB
Bash
#!/bin/bash
|
||
## git 2016-08-30
|
||
## http://www.aqzt.com
|
||
##email: ppabc@qq.com
|
||
##robert yu
|
||
##centos 6和centos 7
|
||
|
||
#安装git图形化工具GitExtensions
|
||
#安装的时候请将msysgit 和 kdiff 这两个选项勾选,ssh 选择 OpenSSH
|
||
#安装下一步Global Settings 为 Checkout as-is, commit as-is
|
||
#打开你的 git Extensions, 打开 Menu/Settings, 选择Global Settings, 并设置以下选项
|
||
|
||
#请大家打开自己的 msys.bat 然后在里面输入
|
||
#ssh-keygen -t rsa -C "你的email地址"
|
||
|
||
#生产KEY默认路径c:\Documents and Settings\你的目录夹\.ssh\id_rsa.pub
|
||
#比如用户robert2016则路径为C:\Users\robert2016\.ssh\id_rsa.pub
|
||
|
||
1.安装Git
|
||
yum install git git-daemon
|
||
|
||
2.生成SSH公钥
|
||
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
|
||
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
|
||
测试登陆 ssh localhost:
|
||
$ ssh localhost
|
||
正常情况下会登陆成功
|
||
调试步骤
|
||
配置登陆失败了,按照以上步骤依旧提示要输入密码。用ssh -v 显示详细的登陆信息查找原因:
|
||
$ ssh -v localhost
|
||
修改文件authorized_keys的权限
|
||
$ chmod 600 ~/.ssh/authorized_keys
|
||
|
||
3.创建Git用户
|
||
useradd git
|
||
passwd git
|
||
|
||
4.初始化仓库
|
||
$ cd /home/git/
|
||
$ mkdir project.git
|
||
$ chown -R git:git /home/git
|
||
$ cd project.git
|
||
$ git --bare init
|
||
|
||
5.在工作机上提交首个文件
|
||
cd myproject
|
||
git init
|
||
touch README
|
||
git add .
|
||
git commit -m 'initial commit'
|
||
git remote add origin git@127.0.0.1:/home/git/project.git
|
||
git push origin master
|
||
|
||
6.在某目录克隆项目
|
||
cd /home/gittest
|
||
git clone git://git@127.0.0.1:/home/git/project.git
|
||
|
||
cd xinproject.git
|
||
git init
|
||
git remote add -f origin git@127.0.0.1:/home/git/project.git
|
||
git remote add -f origin git@127.0.0.1:/home/git/project.git
|
||
git remote add -f origin git@127.0.0.1:/data/git/project.git
|
||
git remote add -f origin git@127.0.0.1:/home/git/project.git
|
||
git remote add -f origin git@127.0.0.1:/home/git/project.git
|
||
git remote add -f origin git@127.0.0.1:/home/git/project.git
|
||
|
||
git config branch.master.remote origin
|
||
git config branch.master.merge refs/heads/master
|
||
git pull
|
||
|
||
已存在项目提交
|
||
cd existing_git_repo
|
||
git remote add origin git@localhost:mechanist.git
|
||
git add .
|
||
git commit -m "test"
|
||
git push -u origin master
|
||
|
||
|
||
初始化:
|
||
git init
|
||
|
||
添加当前目录所有内容:
|
||
git add .
|
||
|
||
查看状态:
|
||
git status
|
||
|
||
|
||
添加commit:
|
||
git commit -am "first commit."
|
||
|
||
版本对比:
|
||
git diff
|
||
|
||
查看历史记录:
|
||
git log
|
||
|
||
看一下每一次版本的大致变动情况,可以使用
|
||
git log –stat –summary
|
||
|
||
用git show命令查看
|
||
|
||
$ git show dfb02e6e4f2f7b573337763e5c0013802e39281
|
||
|
||
此方法可能使用的时候感觉特别的麻烦,其实可以用另外一种方便的方法.
|
||
|
||
$ git show dfb02 # 一般只使用版本号的前几个字符即可
|
||
$ git show HEAD # 显示当前分支的最新版本的更新细
|
||
|
||
GIT硬模式
|
||
$ git reset --hard "a9f2ba791d6654eace41f5a9da4b69680bca4ee9"
|
||
|
||
GIT软模式
|
||
$ git reset --soft "a9f2ba791d6654eace41f5a9da4b69680bca4ee9"
|
||
|
||
GIT reset TAG
|
||
$ git reset --hard aaa
|
||
|
||
分支操作
|
||
|
||
查看分支:$ git branch
|
||
|
||
创建分支:$ git branch 分支名称 (注意:请不要在服务端建立分支)
|
||
|
||
切换分支:$ git checkout 分支名称
|
||
|
||
删除分支:$ git branch -d 分支名称
|
||
|
||
|
||
加入服务器
|
||
git remote add 用户名@计算机名或IP:~/某个目录
|
||
|
||
推送数据
|
||
git push master master #本地master推送到远端master
|
||
|
||
如果想快捷的使用git push就推送到默认远端分支master,可以做个一次性设置:
|
||
git remote add origin <实际的ssl用户名>@<IP地址>:<Git在远端的path>
|
||
做完以上设置,以后直接使用git push 就会自动推送到上述设置地址了,但如果要推送到其他分支,还是需要加参数的,这个设置只是相当于一个默认参数而已。
|
||
|
||
|
||
接收数据
|
||
git pull origin master
|
||
|
||
如果想直接使用git pull直接接收,同样需要提前做一个一次性设置(同样也是不能应用多分支pull情况):
|
||
git branch --set-upstream master origin/master
|
||
|
||
|
||
本地库设置个人姓名和邮件
|
||
git config --global user.name "你的姓名,最好由没有符合和空格的英文字母组成"
|
||
git config --global user.email <邮件名>@<邮箱服务商后缀>
|
||
|
||
如果不设置个人信息,提交的信息将不会有更改者信息,这样会加大项目管理的难度。
|
||
|
||
#回退所有内容到上一个版本
|
||
git reset HEAD^
|
||
|
||
#回退a.py这个文件的版本到上一个版本
|
||
git reset HEAD^ a.py
|
||
|
||
#向前回退到第3个版本
|
||
git reset –soft HEAD~3
|
||
|
||
#将本地的状态回退到和远程的一样
|
||
git reset –hard origin/master
|
||
|
||
#回退到某个版本
|
||
git reset 057d
|
||
|
||
#回退到上一次提交的状态,按照某一次的commit完全反向的进行一次commit
|
||
git revert HEAD
|
||
|
||
#新建old_master分支做备份
|
||
git branch old_master
|
||
|
||
#push到远程
|
||
git push origin old_master:old_master
|
||
|
||
#本地仓库回退到某个版本
|
||
git reset –hard bae168
|
||
|
||
#删除远程的master分支
|
||
git push origin :master
|
||
|
||
#重新创建master分支
|
||
git push origin master |