Git 常用命令
//服务器上建立仓库
sudo git init --bare sample.git
//本地当前路径建立仓库
git init ./
//关联本地已有仓库和远程仓库
git remote add origin https://github.com/isonz/test.git
//远程仓库有密码时不想每次输入密码
git remote add origin https://username:password@github.com/isonz/test.git
//创建本地分支
git checkout -b dev
//删除分支
git branch -D dev
git branch -D origin/dev
//创建本地分支时同时创建远程分支
git checkout -b dev origin/dev
//关联本地分支和远程分支
git branch --set-upstream-to master origin/master
//切换到本地master分支
git checkout master
//提交到远程仓库,第一次提交需要带参数 u ,以后提交可以不用带
git push -u origin master
//从远程仓库拉取数据
git pull origin master
//当前分支与 dev 分支合并
git merge dev
//两种忽略版本控制方法,创建忽略版本控制文件名为:.gitignore,一行一个文件或文件夹,这些文件和文件夹需要在没有进行过版本控制前就列入,如果已经提交过版本,需要用以上2个命令来忽略。
git update-index --skip-worktree -- wp-config.php
git update-index --assume-unchanged -- wp-config.php
//加入缓存区前撤回修改
git checkout -- config.php
//加入缓冲区后提交之前撤回修改,此时回到添加到缓存区后状态
git reset HEAD readme.txt
//提交后的版本退回
git reset --hard 3628164
//设置快捷键
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.ci 'commit -m'
git config --global alias.br branch
git config --global alias.last 'log -1'
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%C
reset' --abbrev-commit"
//git update-index 操作
git update-index
[ --add] [--remove | --force-remove] [--replace]
[ --refresh] [-q] [--unmerged] [--ignore-missing]
[ (--cacheinfo < mode> < object> < file>)…]
[ --chmod=(+|-)x]
[ --assume-unchanged | --no-assume-unchanged]
[ --skip-worktree | --no-skip-worktree]
[ --ignore-submodules]
[ --really-refresh] [--unresolve] [--again | -g]
[ --info-only] [--index-info]
[ -z] [--stdin] [--index-version ]
[ --verbose]
[ --] [< file>…]
/**
参考
https://mirrors.edge.kernel.org/pub/software/scm/git/docs/git-update-index.html
**/
Git 更新
当操作 git 时出现以下情况时,一般需要更新 git 版本。
error: The requested URL returned error: 401 Unauthorized while accessing http://x.x.x.x
步骤:
git --version
yum -y install zlib-devel openssl-devel cpio expat-devel gettext-devel curl-devel perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker
wget -O v1.8.1.2.tar.gz https://github.com/git/git/archive/v1.8.1.2.tar.gz
tar -xzvf ./v1.8.1.2.tar.gz
cd git-1.8.1.2/
make prefix=/usr/local all
make prefix=/usr/local install
git --version
git 问题汇编
出现:
fatal: recursion detected in die handler
解决:
是由于上传的包过大 HTTP 的头出错导致的
git fsck
git config http.postBuffer 524288000
error: RPC failed; result=18, HTTP code = 200
git config --global http.postBuffer 500000000 #500M
git config --list
gitweb配置,git通过http协议访问和通过浏览器浏览–linux
Centos 上安装了GIT 就能建立服务仓库,如果让客户机把文件上传到仓库,通过 gitweb 可以实现。
安装gitweb:
yum install git-daemon gitweb
安装好后,默认的服务目录是:/var/www/git,把这些文件拷贝一份到你想要的任何目录,我拷贝到 /home/git
cp -rf /var/www/git/* /home/git
如何到 /etc/gitweb.conf 配置 gitweb,修改 $projectroot的值
$projectroot = "/var/www/git";
$projectroot = "/home/git";
将来要创建服务仓库的话,就在 /home/git 目录下创建,创建方法:
cd /home/git
git init --bare www.a.com
在/home/git中就有 www.a.com的库了。
配置 Apache ,使其运行 webgit。
Listen 9031
NameVirtualHost *:9031
< VirtualHost *:9031>
ServerName *:9031
DocumentRoot /home/git/
DirectoryIndex gitweb.cgi
#此处需要安装 openssl,具体安装过程请看 http://www.redphp.net/openssl
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/ca.crt
SSLCertificateKeyFile /etc/pki/tls/private/ca.key
< Directory "/home/git/">
Options +ExecCGI
AddHandler cgi-script .cgi
DirectoryIndex gitweb.cgi
DAV on
AllowOverride All
Order Allow,Deny
Allow from all
AuthName "Ptp.cn Git Repository"
AuthType Basic
AuthUserFile /etc/httpd/conf.d/.htpasswd
require valid-user
< /Directory>
< /VirtualHost>
Listen 9030
NameVirtualHost *:9030
<VirtualHost *:9030>
SetEnv GIT_PROJECT_ROOT /home/git/
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias / /usr/libexec/git-core/git-http-backend/
<Location "/">
Dav on
Order Allow,Deny
Allow from all
AuthType Basic
AuthName "Git Access"
AuthUserFile /etc/httpd/conf.d/.htpasswd
require valid-user
</Location>
</VirtualHost>
安装完成就可以通过 https://192.168.1.200:9031/ 输入设置的.htpasswd密码来浏览库目录了。
通过 git clone https://192.168.1.200:9031/www.a.com 克隆库
通过 git remote add origin https://192.168.1.200:9031/www.a.com 关联远程库