廖老师Git学习代码笔记

来源:互联网 发布:王者荣耀未知网络错误 编辑:程序博客网 时间:2024/05/21 23:01

初始化

git init

设置全局用户名

git config –global user.name “Your Name”
git config –global user.email “email@example.com”

2017/7/9 16:42:05

状态查询

git status
git diff ——查看版本修改内容

查看历史版本

$ git log –pretty=oneline

版本回退

git reset –hard HEAD^ – ^为上一个

版本回到最新的版本

git reset –hard 84aad4e 84aad4e为在commit时的id

找不到commit的id的版本回退

git reflog –查到以往的commit id 进行回退即可


目录

工作区(Working Directory)

就是自己创建文件夹,里面存放.git

Repository

工作区里的 隐藏文件夹.git 是git的版本库

暂存区(Stage)

git add 命令就是把文件提交到暂存区(Stage)
commit后 把暂存区的放到master中

修改管理

每一次修改 都需git add 命令 再commit,不然是不会提交之前的修改的
不会提交到暂存区

第一次修改 -> git add -> 第二次修改 ->git add-> git commit

查看工作区和版本库的区别

git diff HEAD – readme.txt

撤销修改

工作区的撤销: git checkout – readme.txt
暂存区的撤销: git reset HEAD readme.txt

删除文件

删除工作区和版本库 rm b.txt
git rm b.txt
commit

误删除工作区文件,前提是版本库中还有存在的文件

git checkout – b.txt



远程仓库

ssh-keygen -t rsa -C “youremail@example.com”
登录github 设置ssh 密匙
创建一个版本库
git remote add origin git@github.com:shr4351/learn.git
git push -u origin master — 第一次推送
有密码就输入密码
git push origin master n次推送

远程库clone

git clone git@github.com:shr4351/hubclone.git



分支管理

创建分支

git checkout -b dev ———— -b 相当于 git branch dev git checkout dev

合并分支(快进模式)

git merge dev
git branch -d dev —-删除分支

查询分支

git branch

删除分支

git branch -d dev

查询分支合并情况

git log –graph –pretty=oneline –abbrev-commit

解决冲突 注意保持UTF-8格式

git add
git commit

分支管理策略

Fast forward 模式 删除分支后会丢失分支信息
用 –no-ff 模式
git merge –no-ff -m ‘merfr no ff’ devc
合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并

bug 分支

把当前工作现场“储藏”起来,等以后恢复现场后继续工作:
git stash —保存
git stash list —查看工作现场
git stash apply恢复, 但不删除stash内容 git stash drop 删除stash内容
git stash pop 恢复也删除stash内容
git stash apply stash@{0} 恢复指定的stash

开发新功能 feature分支

git checkout -b feature-vulcan
git branch -D 强行删除



多人协作

查看远程库信息

git remote
git remote -v 详细

推送分支

git push origin master(可以选自己的分支)
master 需要同步
dev 需要同步

dev分支共同开发

git checkout -b dev origin/dev 创建远程origin的dev分支到本地

shr@shr-PC MINGW64 /d/SHE_types/Git/lear (master)

$ git push origin dev

切换到另一个用户,都是同时提交dev目录
Enter passphrase for key ‘/c/Users/shr/.ssh/id_rsa’:
To github.com:shr4351/learn.git
! [rejected] dev -> dev (fetch first)
error: failed to push some refs to ‘git@github.com:shr4351/learn.git’
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., ‘git pull …’) before pushing again.
hint: See the ‘Note about fast-forwards’ in ‘git push –help’ for details.

git pull 最新的提交从origin/dev抓下
git push origin branch-name推送自己的修改;
get pull 报错 则命令git branch –set-upstream branch-name origin/branch-name 关联



标签

创建新标签

git tag v1.0
git tag -a v0.1 -m “version 0.1 released” 3628164 用-a指定标签名,-m指定说明文字

所有的标签

git tag

忘记打标签了

找到历史提交的commit id git log –pretty=oneline –abbrev-commit
git tag v0.9 123456

按照name查询

git show

私钥 签名

git tag -s v0.2 -m ‘singed version v0.2’ 10281a3 会报错需要配置Gunpg

删除标签

git tag -d v0.9

推送标签

git push origin v1.0
git push origin –tags 全部标签

删除远程标签

git tag -d v1.0
git push origin :refs/tags/v1.0 删除



自定义Git

git config –global color.ui true


忽略特殊文件 Java类

`
# Compiled class file
*.class

# Log file*.log# BlueJ files*.ctxt# Mobile Tools for Java (J2ME).mtj.tmp/# Package Files #*.jar*.war*.ear*.zip*.tar.gz*.rar# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xmlhs_err_pid*

`

强制添加

git add -f App.class
git check-ignore -v 检查



配置别名

新手嘛,不配置咯,廖老师说的好,多记几个英文单词



搭建Git服务器 Unbuntu

sudo apt-get install git 安装
sudo adduser git 创建服务
收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个
git init –bare sample.git /srv/sample.git,在/srv目录下输入命令
sudo chown -R git:git sample.git 把owner改为git
编辑/etc/passwd 禁止shell登录 git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

克隆

git clone git@server:/srv/sample.git

感想

Git很强大,linux也有相关的权限托管,具体请查询廖老师资料