前记:
- 工作区:开发文件存放的目录
- 暂存区:.git文件夹中,git add 添加的文件存放目录
- 版本库:git commit 提交后文件进入版本库。
一、创建本地仓库,在/d/Projects/git目录下创建仓库。
注册:
Administrator@SKY-20170408WPJ MINGW64 /d/git (master)
$ git config --global user.email "xxxxx@163.com"
Administrator@SKY-20170408WPJ MINGW64 /d/git (master)
$ git config --global user.name "xxxx"
git config core.autocrlf false #//禁用自动转换 不然可能会报一些:LF will be replaced by CRLF in 文件名 。看着烦
Administrator@WIN-20151122RYN MINGW64 /d/Projects/git $ git init Initialized empty Git repository in D:/Projects/git/.git/
二、新建index.php,并在index.php中:
<?php
echo "hello git";
三、提交到本地仓库
Administrator@WIN-20151122RYN MINGW64 /d/Projects/git (master) $ git add ./ Administrator@WIN-20151122RYN MINGW64 /d/Projects/git (master) $ git status On branch master Initial commit Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: index.php Administrator@WIN-20151122RYN MINGW64 /d/Projects/git (master) $ git commit -m "make a file named index.php" [master (root-commit) 4ccd708] make a file named index.php 1 file changed, 2 insertions(+) create mode 100644 index.php Administrator@WIN-20151122RYN MINGW64 /d/Projects/git (master) $ git status On branch master nothing to commit, working tree clean
(注:git add ./ 将当前目录(/d/Projects/git)发生变化的文件添加到仓库的暂存区)
四、提交本地项目到远程服务器:
1、为远程服务器项目添加别名:
git remote add git_origin git@xxx.xx.xxx.xx:/data/gitserver/git.git ##根据实际情况设置 git:服务器上git用户名 ,xxx.xx.xxx.xx :服务器地址:/data/gitserver/git.git创建的git仓库
git remote rm git_origin ##删除
2、推送项目:
git push git_origin master ##将本地的 master 分支推送至远端的 master 分支,如果没有就建一个
(注:遇到错误:
remote: error: insufficient permission for adding an object to repository database objects remote: fatal: failed to write object error: remote unpack failed: unpack-objects abnormal exit是因为远程的git.git文件没有访问权限,在git.git目录下:chown -R git:git git.git
)
五、从远程服务器clone项目到本地
在E:/git目录下
Administrator@WIN-20151122RYN MINGW64 /e/git
git clone git@xxx.xx.xxx.xx:/data/gitsrv/git.git
六、从服务器同步代码到本地
Administrator@WIN-20151122RYN MINGW64 /d/Projects/git (master)
$ git pull git_origin master
七:日志
Administrator@WIN-20151122RYN MINGW64 /d/Projects/git (master)
$ git log
或
Administrator@WIN-20151122RYN MINGW64 /d/Projects/git (master)
$ git log --pretty=oneline
八、版本切换
git reset --hard 2580d ##2580d是某个版本号前几位,只要不重复就行
git push -f -u origin master ##强制将本地回退的版本更新到服务器
九、搭建服务器仓库
cd ./data/gitserver/ git init --bare invest.git cd ../ chown -R gitsrv:gitsrv gitserver
十、生成本地rsa_pub key生成,并配置到服务器
ssh-keygen -t rsa -C "lippor2011@163.com" #默认生成到/c/Users/Administrator/.ssh目录下
将c/Users/Administrator/.ssh目录下:id_rsa.pub文件内容拷贝到服务器authorized_keys文件夹下
完成后就可以从服务器上clone代码或者push代码到服务器
十一、分支管理
git branch #分支列表 ,当前所在分支前会有 “*”号 git checkout -b dev #创建dev分支并切换到此分支 等同于:git branch dev git checkout dev ##进行开发工作,工作结束后提交: $ git add ./ $ git status $ git commit -m "test dev branch" #提交完成后 git checkout master #切换到主分支,主分支并没有看到刚才修改的内容 #将dev分支内容合并到主分支 git merge dev #将dev分支合并到当前分支
git branch -d dev #删除分支
十二、版本回退与前进
$ git log --pretty=oneline 78a400aec133030dba8ead457c4583e897dd9ca6 (HEAD -> master, dev) test dev branch 1769fbb3a4d7deccfff15600227d8ad798f01c72 (git_invest/master) #回退一个版本到:1769fbb3a4d7deccfff15600227d8ad798f01c72 $ git reset --hard 1769f #前进一个版本到:78a400aec133030dba8ead457c4583e897dd9ca6 $ git reset --hard 78a4
十三、gitignore文件失效,多个用户的某些操作导致gitignore文件失效
git rm -r --cached .
运行完之后正常提交就可以