Git命令——NWU_LK

Git命令

Git简介
  1. 版本控制工具的发展历史经过:原始人工维护状态,本地RCS,集中式如VCS、SVN和分布式如Git。

  2. 版本控制工具提供了协作开发的能力,借助它们我们可以回到任何时间的代码状态。

  3. 集中式版本控制工具,几乎所有的动作都需要服务器参与,并且数据安全性与服务器关系很大。

  4. Git 是分布式版本控制工具,除了与服务器之前进行按需同步之外,所有的提交操作都不需要服务器。

命令补齐

将Git源码包里的命令补齐脚本复制到bash-completion对应的目录中,执行命令cp contrib/completion/git-completion.bash /etc/bash_completion.d/,然后重新加载自动补齐脚本使自动补全生效,命令为:. /etc/bash-completion。如果要自动补全永久生效,则需要修改本地配置文件~/.bash_profile或者全局配置文件/etc/bashrc文件,添加如下内容。

if [-f /etc/bash_completion];then
. /etc/bash_completion
fi
Git基本配置

系统配置:git config --system 文件

用户配置:git config --global 文件,常用配置如下。

命令说明
git config --global user.name zhangsan配置姓名
git config --global user.email 111@qq.com配置邮箱
git config --global core.autocrlf true配置提交代码时将lf转换为crlf,windows中签出代码时会将crlf转换为lf
git config --global gui.encoding utf-8配置编码
git config --global i18n.commitEncoding utf-8git commit采用的编码
git config --global i18n.logOutputEncoding utf-8git log采用的编码

仓库配置:git config --local 文件

Git基本概念

版本库、工作区、暂存区

基本指令
git指令作用
git init将当前文价夹初始化为git仓库(版本库)
git add "文件名"将文件存在暂存区,该文件必须在仓库中,与.git文件(默认隐藏)同一目录
git rm "文件名"删除某文件到暂存区
git move "文件名"移动某文件到暂存区
git commit -m "描述信息"将暂存区的文件推到仓库
git status查看仓库状态
git diff "文件名"查看修改内容
git reset --hard HEAD^^回退到上两个版本
git reset --hard HEAD~100回退到上100个版本
git reset --hard 版本号回退到具体某个版本
git reflog查看用过的命令记录

Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。git add命令实际上就是把要提交的所有修改放到暂存区,执行git commit就可以一次性把暂存区的所有修改提交到分支.

git指令作用
git restore "文件名"回退修改但未提交的内容
git checkout -- "文件名"放弃对工作区的修改,未add前
git restore --staged "文件名"将add到暂存区的文件撤销
git reset HEAD “文件名”将add到暂存区的文件撤销
git rm “文件名”将删除请求添加到暂存区
操作github远程仓库

生成公钥和私钥:ssh-keygen -t rsa -C "设置的email"
执行完以上的指令后,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。将公钥上传到github上,这样就可以实现远程仓库的连接。

git指令作用
git remote add origin git@github.com:github用户名/远程仓库.git将本地仓库和远程仓库关联,远程仓库叫origin
git push -u origin master第一次推送master分支的所有内容到远程库
git push origin master推送master分支的所有内容到远程库
git clone git@github.com:‘用户名’/远程库名.git从远程库克隆项目到本地
git remote -v查看远程库的信息
git pull 远端仓库 分支名称从远程库拉取对应分支的更新与本地合并
git fetch 远端仓库 分支名称从远程库拉取对应分支的更新
git remote rm origin删除与origin远程库的连接
分支管理
git指令作用
git branch '分支';创建分支1
git checkout '分支1'切换到分支1
git switch '分支1'切换到分支1
git checkout -b '分支1'创建并切换到分支1
git checkout -b dev origin/dev创建分支并与远程库的dev分支关联
git branch --set-upstream-to=origin/dev dev设置本地分支和远程分支连接
git switch -c '分支1'创建并切换到分支1(新版)
git branch查看当前分支
git merge 分支1将分支1合并到当前分支上
git branch -d '分支1'删除分支1
git branch -D '分支1'强行删除分支1,即便分支1未被合并
git log --graph --pretty=oneline --abbrev-commit查看日志中的分支合并图
git merge --no-ff -m "merge with no-ff" 分支1禁用fast forward的合并
git rebase把本地未push的分叉提交历史整理成直线

分支合并发生冲突时,需要查看文件内容,看各自分支修改的内容,然后手动修改文件后再次提交文件。
合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息,添加上--no-ff -m后,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息

一般利用分支工作的流程如图所示:
公司的每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并,并且dev分支也会定时往主分支合并。
在这里插入图片描述
git可以实现保存当前分支工作现场的功能,保存后就可以切换到其他分支工作,工作完之后可以回到当前分支继续干活。

git指令作用
git stash将该分支的事务搁置
git stash list查看所有被搁置的事务
git stash pop恢复当前第一个事务并且将stash中相应的搁置信息删除
git stash apply stash@{num}恢复某个具体的事务,但不会删除stash中的搁置信息
git stash drop stash@{num}删除stash中的某个搁置信息
git cherry-pick commit号将提交的修改“复制”到当前分支,避免重复劳动
标签管理

Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针。默认标签是打在最新提交的commit上的。

git指令作用
git tag查看所有标签
git tag -a v1.0 -m "说明"给最近的提交打标签v1.0,并添加说明
git tag v1.0 commit_id给对应的提交打标签
git show <tagname>显示某个标签的具体信息
git tag -d v0.1删除标签名未v1.0的标签
git push origin <tagname>向远程库推送某个标签
git push origin --tags向远程库添加所有标签
git push origin :refs/tags/<tagname>删除一个远程库标签,前提是本地的该标签已删除
使用github

将别人项目Fork到自己的账号中,然后用git clone ssh地址将项目拉取到本地操作,如果原项目是直接在别人账号中克隆的,那么将无法完成推送修改,因为没有权限。

声明

该学习笔记来源于廖雪峰老师的网站,老师的 git 教程堪称全网最好,没有之一!
廖雪峰git官网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值