git基本操作

* git是版本控制工具
  1. 仓库

github

国外服务器, 国际知名度高, 私有仓库收费

参与他人项目

将他人的项目fork到自己的github中, 然后修改之后,通过request pull,看他人是否接受你的修改.

码云(gitee)

国内服务器, 快, 私有仓库免费, 容量有限

* 

git搭建

  1. 安装
    sudo pacman -S git

  2. 自报家门
    git config --global user.name “Your Name”
    git config --global user.email “email@example.com”

  3. 建立版本库
    创建版本库目录,在当前目录下执行以下命令
    git init
    会生成.git目录

  4. 添加文件到版本库中
    git add file1
    git add file2 file3
    git commit -m “注释”

时光穿梭机

  1. 更改文件
    git status //查看工作区的状态,是否有更改
    git diff //对比更改的地方 本地版本与暂存区比较
    git diff HEAD //本地版本与master比较
    git add file1
    git commit -m “”

  2. 版本回退

// 查看commit 日志
git log

//HEAD指向当前版本
//回退到上一个版本,
git reset --hard HEAD^
//回退到上上个版本
git reset --hard HEAD^^
//回退到上100个版本
git reset --hard HEAD~100

//回退到指定版本
git reset -hard commit_id

// 查看命令历史记录
git relog

  1. 工作区与暂存区
    工作区 --> add --> 暂存区 --> commit --> master

  2. 撤销修改
    场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout – file。

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD ,就回到了场景1,第二步按场景1操作。

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交. git reset 版本号

场景4: 当你add文件后,想要撤销。git reset 文件名

  1. 删除文件
    git rm file
    git commit

远程仓库

  1. 两种方式
    (1). SSH
    速度更快
    不用每次输入密码

本地仓库push到远程仓库

git remote add origin git@server-name:path/repo-name.git //origin是默认, 可以修改
git push -u origin master //第一次push加-u, 将本地与远程关联起来, 简化操作
git push origin master

远程仓库clone到本地仓库

git clone git@github.com:michaelliao/gitskills.git

删除远程仓库

git remote rm origin

(2). http

* 

分支管理

git branch //查看分支
git branch //创建分支
git checkout //切换分支
git checkout -b //创建并切换分支
git merge //合并某分支到当前分支 默认使用fast forward 在日志中看不到曾经合并过

git branch -d //删除分支

  1. 解决冲突
    在无法合并时,需先解决冲突,再提交,合并
    git log --graph //分支合并图
    git merge --no-ff -m “” //禁用fast forward 可以在日志中看出曾经做过日志

  2. bug分支
    在写程序时, 需要突然的修改一个bug, 使用stash保存当前未commit的环境,然后再切换分支去修改bug,修改后,切换分支,再使用stash pop将工作环境还原

git stash //将当前工作环境(未提交)保存

git stash apply //将工作环境还原, 但不删除stash
git stash pop //将工作环境还原,并删除stash
git stash list //查看工作环境列表

  1. feature分支
    每次添加一个新功能时, 最好新建一个分支,完成新功能后, 再合并.

如果要丢弃一个没有被合并过的分支,可以通过git branch -D 强行删除。

  1. 多人工作
    git remote -v //查看远程库
    git pull //将远程的代码合并到本地
    git checkout -b branch-name origin/branch-name //将远程的分支同步到本地分支
    git branch --set-upstream branch-name origin/branch-name //远程分支和本地分支相关联

多人工作的模式

  1. 首先,可以试图用git push origin 推送自己的修改;

  2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;

  3. 如果合并有冲突,则解决冲突,并在本地提交;

  4. 没有冲突或者解决掉冲突后,再用git push origin 推送就能成功!

  5. rebase

标签管理

git tag //给当前分支创建标签
git tag -a -m “blablabla…” //给当前标签指定标签信息
git tag //查看所有标签
git show tag_name //展示该tag信息
git tag tag_name 版本号 //给该版本添加tag名

git push origin //向远程推送一个tag
git push origin --tags //推送本地所有tag
git tag -d //删除本地tag
git push origin :refs/tags/ //删除远程tag

* 

git自定义配置

git config --global color.ui true //添加颜色

  1. 忽略特殊文件
    编写.gitignore文件, 将需要忽略的文件写入该文件中
    example:
    *.py[cod]
    *.so
    *.egg
    *.egg-info
    dist
    build
    模板:
    https://github.com/github/gitignore

  2. 如果发现有文件添加不上
    git add -f App.class //强制添加
    git check-ignore -v App.class //查看是哪个忽略规则出现问题

  3. 别名
    git config --global alias.st status //git st
    git config --global alias.unstage ‘reset HEAD’ //git unstage test.py == git reset HEAD test.py

//查看日志更详细
git config --global alias.lg “log --color --graph --pretty=format:’%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset’ --abbrev-commit”

  1. 配置文件
    –global 针对该用户, 配置文件在/home/jim/.gitconfig
    针对该项目的配置文件在 .git/config

  2. 搭建git服务器

(1). 安装git
pacman -S git

(2). 创建git用户
adduser git

(3). 证书
将公钥导入到/home/git/.ssh/authorized_keys中, 一行一个

(4). 初始化git仓库
git init --bare sample.git
chown -R git:git sample.git

(5). git用户不允许登录shell
/etc/passwd
git❌1001:1001:,:/home/git:/bin/bash 改为
git❌1001:1001:,:/home/git:/usr/bin/git-shell

(6). 克隆远程仓库
git clone git@server:/srv/sample.git

(7). 管理公钥
Gitosi

(8). 权限管理
Gitolite

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值