Git学习笔记

Git的学习笔记

Git教程–廖雪峰

开始

# 创建一个目录
mkdir git_profile
# 进入目录
cd git_profile
# 将目录初始化为一个git仓库
git init

当在git_profile目录中新建了一个文件之后,他没有自动添加到git仓库中,需要执行git add命令才能添加文件进git仓库中,git commit则表示提交文件到git仓库

# 添加readme.txt文件到git仓库中
git add readme.txt
# 添加当前目录下所有文件到git仓库中
git add .
# 提交文件到git仓库中, 表示提交上次添加的所有文件到git仓库,-m 后面接的是此次提交文件的提示信息,可以理解为备注
git commit -m "first commit"

一些命令

# 查看仓库状态
git status
# 查看readme.txt文件改变内容
git diff readme.txt

# 查看提交日志
git log
# 查看简略提交日志
git log --pretty=oneline

概念

HEAD表示当前版本,上一个版本是HEAD^,上上个版本是HEAD^^,往上一百个版本HEAD~100

工作区指的是当前目录
版本库指的是工作区中的隐藏目录.git
git add命令是将提交的修改放到暂存区(Stage)
git commit命令是将所有暂存区的修改提交到分支

# 回退上一个版本
git reset --hard HEAD^
# 利用git log,找到commit id,回到指定版本
git reset --hard <commit id>
# 记录每一次git命令
git reflog
# 查看工作区和版本库最新版本的区别
git diff HEAD -- readme.txt
# 丢弃工作区readme.txt的修改
git checkout -- readme.txt
# 具体含义是指:将readme.txt在工作区的修改全部撤销

# 将暂存区的修改撤销掉(unstage),重新将readme.txt回复到HEAD的readme.txt
git reset HEAD readme.txt

关于删除文件

# 删除版本库中的test.txt文件
git rm test.txt
# 然后提交修改
git commit -m "rm test.txt"

# 删错之后将文件恢复到最新版本
git checkout -- test.txt

远程仓库

Github和coding
本地生成ssh key

# 创建SSH key,替换email地址
ssh-keygen -t rsa -C "youremail@example.com"
# 在用户主目录中找到.ssh/id_rsa.pub,复制其内容
cat ~/.ssh/id_rsa.pub
# 在Github或者coding中找到Add SSH Key,填上任意名字Title,Key里面粘贴刚刚复制的id_rsa.pub内容

关联本地git仓库与远程仓库

# git@github.com替换为远程仓库账号
# name替换为远程仓库的名字
# profile.git替换为远程仓库的名字
git remote add origin git@github.com:name/profile.git

# 推送本地所有内容推送到远程仓库上
# 第一次推送需要加上-u参数,之后再次提交则可去掉-u参数
git push -u origin master

从远程仓库克隆到本地

# git@github.com替换为远程仓库账号
# name替换为远程仓库的名字
# profile.git替换为你需要克隆的项目
git clone git@github.com:name/profile.git

# 同步更新远程仓库到本地仓库上
git pull

管理分支

# 创建dev分支,并且切换到dev分支
git checkout -b dev
# git checkout 加上 -b 参数表示创建并切换,同下面两条命令实施
git branch dev
git checkout dev

# git branch查看当前分支
git branch
# 切换为master分支
git checkout master
# dev分支合并到master分支
git merge dev
# 删除dev分支
git branch -d dev

解决冲突

# 查看冲突文件
git status

# 查看分支合并情况
git log --graph

合并分支但不丢掉分支信息

# 合并dev分支,使用--no-ff表示禁用Fast forward 
git merge --no-ff -m "merge with no-ff" dev

修复bug分支

# 新建分支,在分支上修改bug
git checkout -b issue-1
# 修复完bug之后,切换到master分支
git checkout master
# 合并分支,并删除issus-1分支
git checkout master
git branch -d issue-1

# 切换到dev分支上继续工作
git checkout dev
# 需要使用git stash命令查看、恢复、删除
# git将之前的工作区存在了某个地方,需要恢复
git stash list      # 查看stash内容
git stash pop       # 恢复同时删除stash内容
git stash apply     # 恢复后不删除stash内容

Feature分支

# 新建一个feature分支
git checkout -b feature
# 添加完内容之后,提交内容
git commit -m "add something"
# 切回分支,删除分支
git checkout dev
git branch -d feature
# 删除失败,强行删除分支
git branch -D feature

多人协作

# 查看远程库的信息
git remote
# 查看更加详细的信息
git remote -v
# 推送分支
git push origin master
# 推送dev分支
git push origin dev

# 抓取分支,首先clone项目,默认情况下只能看到本地master分支
git clone xxx
# 开发dev分支,创建远程origin的dev分支到本地
git checkout -b dev origin/dev
# 如果git push失败,需要git pull
# git pull也失败,需要指定本地dev分支与远程origin/dev分支的链接
git branch --set-upstream dev origin/dev

标签管理

添加标签

# 给当前分支打一个新标签,名为v1.0
git tag v1.0
# 查看所有标签
git tag
# 给之前的commit打上标签,需要找到历史提交的commit id,之后打上标签
git log --pretty=oneline --abbrev-commit
git tag v0.9 <commit id>
# 查看标签信息
git show v0.9
# 创建带说明的标签
git tag -a v0.1 -m "version 0.1" <commit id>
# 通过-s用私钥签名一个标签
git tag -s v0.2 -m "version 0.2" <commit id>

操作标签

所有创建的标签都只存储在本地,不会自动推送到远程,打错的标签可以在本地安全删除

# 删除标签
git tag -d v0.1
# 推送标签到远程
git push origin <tagname>
# 一次性推送全部尚未推送到远程的本地标签
git push origin --tags

# 删除远程标签
# 删除本地的标签
git tag -d v0.9
# 再删除远程,v0.9可替换为<tag name>
git push origin :refs/tags/v0.9

推送的时候记住密码

>>>vim .git/config
# 最后加入下面内容
[credential] 
helper = store
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值