技术储备--Git学习

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/BraveLoser/article/details/80393410

参考教程

Git简介

基本使用

  • 安装Git
    安装完成后需要配置一下name和email.
git config --global user.name csdn
git config --global user.email csdn@cn.com
git init
git add ream.txt
git commit -m "worte a readme file"
  • 查看仓库状态
git status
  • 查看具体修改
git diff readme.txt 
  • 显示提交历史
git log
git log --pretty=oneline
  • 版本回退
git reset --hard HEAD^
  • 查看命令历史
git reflog
  • 管理修改
    为什么Git比其他版本控制系统设计得优秀?
    因为Git跟踪并管理的是修改, 而非文件.

  • 丢弃工作区的修改
    git checkout其实是用版本库里的版本替换工作区的版本, 无论工作区是修改还是删除, 都可以“一键还原”.

git checkout -- readme.txt
  • 丢弃暂存区的修改
git reset HEAD readme.txt
  • 删除文件
rm test.txt
git rm test.txt
git commit -m "remove test.txt"

远程仓库

  • 关联远程仓库
git remote add origin git@github.com:csdn/studygit.git
  • 关联后推送master分支
// 由于远程库是空的, 我们第一次推送master分支时, 加上了-u参数.
// Git不但会把本地的master分支内容推送的远程新的master分支, 还会把本地的master分支和远程的master分支关联起来, 在以后的推送或者拉取时就可以简化命令.
git push -u origin master
  • 推送最新修改
git push origin master
  • 从远程库克隆
git clone git@github.com:csdn/study2.git

分支管理

// 创建并切换分支
git checkout -b dev

// 创建分支
git branch dev
// 切换分支
git checkout dev
  • 查看当前分支
git branch
  • 合并指定分支到当前分支
git merge dev
  • 删除分支
git branch -d dev
  • 查看分支合并图
git log --graph --pretty=oneline --abbrev-commit
git log --graph --pretty=oneline --abbrev-commit
  • 禁用Fast forward
    什么时候用到这个禁用Fast forward?
    通常, 合并分支时, 如果可能, Git会用Fast forward模式, 但这种模式下, 删除分支后, 会丢掉分支信息.
git merge --no-ff -m "merge with no-ff" dev
  • Bug分支
// 临时保存现场
git stash

// 查看保存的工作现场
git stash list

// 恢复现场
// 方法一
git stash apply stash@{0}
git stash drop stash@{0}
// 方法二
git stash pop
  • Feature分支
开发一个新feature, 最好新建一个分支;

如果要丢弃一个没有被合并过的分支, 可以通过git branch -D <name>强行删除.
// 查看远程库的信息
git remote
// 显示更详细的信息
git remote -v

// 推送分支
git push origin master

// 抓取分支
git pull

多人协作的工作模式通常是这样:
首先, 可以试图用git push origin <branch-name>推送自己的修改;
如果推送失败, 则因为远程分支比你的本地更新, 需要先用git pull试图合并;
如果合并有冲突, 则解决冲突, 并在本地提交;
没有冲突或者解决掉冲突后, 再用git push origin <branch-name>推送就能成功!
如果git pull提示no tracking information, 则说明本地分支和远程分支的链接关系没有创建, 用命令git branch --set-upstream-to <branch-name> origin/<branch-name>.
  • Rebase
rebase操作可以把本地未push的分叉提交历史整理成直线;
rebase的目的是使得我们在查看历史提交的变化时更容易, 因为分叉的提交需要三方对比.

git rebase

标签管理

  • 几个思考
创建和删除标签都是瞬间完成的, 为什么?
因为标签就是指向某个commit的指针, 跟分支很像, 但是分支可以移动, 标签不能移动.

Git有commit, 为什么还要引入tag?
  • 创建标签
// 查看标签
git tag

// 打一个新标签
git tag v1.0(默认为HEAD)
git tag v0.9 f52c633
git tag -a v0.1 -m "version 0.1 released" 1094adb

// 查看说明文字
git show v0.1
  • 操作标签
// 删除标签
git tag -d v0.1

// 推送某个标签到远程
git push origin v1.0

// 一次性推送全部尚未推送到远程的本地标签
git push origin --tags

// 删除远程标签
// 1.先从本地删除
git tag -d v0.9
// 2.然后从远程删除
git push origin :refs/tags/v0.9

自定义Git

  • 显示颜色
git config --global color.ui true
  • 忽略特殊文件
在Git工作区的根目录下创建一个特殊的.gitignore文件, 然后把要忽略的文件名填进去, Git就会自动忽略这些文件.

忽略文件的原则:
忽略操作系统自动生成的文件, 比如缩略图等;
忽略编译生成的中间文件, 可执行文件等, 也就是如果一个文件是通过另一个文件自动生成的, 那自动生成的文件就没必要放进版本库, 比如Java编译产生的.class文件;
忽略你自己的带有敏感信息的配置文件, 比如存放口令的配置文件.

// .gitignore写得有问题, 需要找出来到底哪个规则写错了, 可以用git check-ignore命令检查
git check-ignore -v App.class
  • 配置别名
git config --global alias.st status

配置Git的时候, 加上--global是针对当前用户起作用的, 如果不加, 那只针对当前的仓库起作用.

// 配置文件在哪?
每个仓库的Git配置文件都放在.git/config文件中
而当前用户的Git配置文件放在用户主目录下的一个隐藏文件.gitconfig中
第一步,安装git
sudo apt-get install git

第二步,创建一个git用户,用来运行git服务
sudo adduser git

第三步,创建证书登录
收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个.

第四步,初始化Git仓库
sudo git init --bare sample.git
sudo chown -R git:git sample.git

第五步,禁用shell登录

第六步,克隆远程仓库

最后一次修改时间: 2018-5-22 20:47:02

猜你喜欢

转载自blog.csdn.net/BraveLoser/article/details/80393410