这几天在做swoole,win开发,弄的虚拟机,很麻烦。所以想在虚拟机上装个git,我在win开发,在linux跑。
1.在linux建git
1.yum install git
2.随便找个目录,新建一个文件夹当仓库。例如/root/sample,进入sample ,git init --bare sample.git
//这里 git init 是初始化空仓库的意思,而参数 --bare 是代表创建裸仓库,这个参数一定记得带上
创建一个git用户用来运行git服务
adduser git #这行代码会在/home/下生成一个git文件夹,就是下一步中放秘钥的地方
2.在win下载git并克隆
1. 依旧是随便找个文件夹。进入这个文件夹(例如test),执行
git clone git@192.168.88.128:/root/sample/sample.git thisgit
这句的意思是在文件夹test中创建了一个thisgit的版本库
2.需要ssh秘钥
1.cd ~/.ssh
ll -a
我们需要寻找一对以 id_dsa 或 id_rsa 命名的文件,其中一个带有 .pub 扩展名。 .pub 文件是你的公钥,另一个则是私钥。 如果找不到这样的文件(或者根本没有 .ssh 目录),你可以通过运行 ssh-keygen 程序来创建它们。在 Linux/Mac 系统中,ssh-keygen 随 SSH 软件包提供;在 Windows 上,该程序包含于 MSysGit 软件包中。
首先 ssh-keygen 会确认密钥的存储位置(默认是 .ssh/id_rsa),然后它会要求你输入两次密钥口令。如果你不想在使用密钥时输入口令,将其留空即可。
用ftp把这东西传到服务器,就是我们的虚拟机了
3.现在再到了服务器
把刚才那东西,复制到/home/git/.ssh/authorized_keys
yy:复制本行 2yy或y2y:从当前行开始,复制两行 dd:剪切本行 d2d:从当前行开始,剪切2行
p:粘贴 yG:复制到文件尾 yw:复制1个word y2w:复制2个word dG:剪切至文件尾 dw:剪切1个word
:undo或:u撤销
到了那个sample.git/hooks
cp post-receive.sample post-receive
vim post-receive
git --work-tree=/home/www checkout -f
保存退出
执行 chown git:git post-receive
chmod +x post-receive
chown是分配用户组,chmod是分配权限
好了,现在用git提交代码就直接到了服务器了
3.关于分支
1. git checkout -b dev 创建并跳转dev分支(dev是分支名称)
git checkout fimeName 清空本次修改
git checkout commit_id fileName 把某个文件还原到某个版本(只能用这个,reset是全部还原)
2. git branch --set-upstream-to=origin/dev dev 指定本地dev链接到远程dev
2.1 git checkout -b dev origin/dev 这个是上面两行的结合
3. git log --graph --pretty=oneline --abbrev-commit 查看历史
git log --oneline --graph --decorate --all 这个也行
git log --oneline --graph -10 这个也行,显示10行
4. git merge --no-ff -m 'hello world' dev 这样合并分支
5. git branch -D dev 强制删除dev分支,小写d是普通删除
6. git stash 可以把当前工作现场‘暂存’,然后开发另一个新的功能
开发完了之后
git stash list 查看工作现场
git stash pop 回到dev并且删掉stash内容
git stash apply && git stash drop (这个虽然也是回到dev并且删掉stash内容,但是毕竟麻烦)
如果是多次stash,首先用 git stash list查看,然后用git stash apply stash@{0}恢复指定stash
7. git fetch 更新远程库中的commit-id到本地
8. git remote add hello git@110.110.110.110:/home/git/git.git 添加一个远程库,可以用git remote [-v]来查看远程库
9. git log -p -n 如果n=1查看最近1次的修改内容
git show commit_id 查看某一次修改内容
git show commit_id -- fileName 查看某个文件的修改内容fileName要用完整路径,当前cmd窗口路径后面的部分(这种查 看某一个文件的方式,其他命令也可的,加到最后边就行,上下文我就不写了)
10. git reset --hard commit_id 版本回退
git reset --hard HEAD^ 回到最新
11. git log [ ] -- *hello.js 查看hello.js的提交记录,记得在文件前面加*,中括号里边可以填其他命令,比如-10,--oneline,
--abbrev-commit:仅显示SHA-1的前几个字符,而非所有的40个字符
12. git fetch --all 下载远程代码
git reset --hard origin/master // master是主线,用哪条写哪条 这两条命令是用远程覆盖本地
git clean -f
这有一篇写的很好 https://www.cnblogs.com/chenlogin/p/6592228.html
13. git cherry -v 查找已经commit但没有push的记录
14. git log master ^origin/master 查看 本地master和远程master的差异
15. git restore --staged <file> // 功能和git add 相反
16. git commit --amend -m 'abc' 或 git commit --amend // 执行git commit -m '666' 发现注释666不对,想修改备注
17. 给分支加备注 来自https://www.cnblogs.com/wangziye/p/11904511.html
git config branch.分支名称.description '备注' // 添加备注,这时候使用git branch 还看不到
npm i -g git-br // 通过git br查看分支,这是可以看到备注了
git config branch.{branch_name}.description 《这里添加注释》
4. git每次下载上传都要输入账号密码
git config --global credential.helper store
5. 每次敲那么一堆字母很麻烦,加点别名
win cd /etc && vi bash.bashrc
最下边加
# 加点别名
alas gs = 'git status'