git如何查看缓存区文件内容_GIT常用命令备忘

GIT基础以及本地版本管理

git设置用户名和邮箱:

git config --global user.name "Your Name"

git config --global user.email "email@example.com"

注意:版本控制系统,其实只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码等等,它可以告诉你每次的改动,比如在第5行加了一个单词“Linux”,在第8行删了一个单词“Windows”。而图片、视频这些二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是只知道图片从100KB改成了120KB,但到底改了啥,版本控制系统不知道,也没法知道。

如果要真正使用版本控制系统,就要以纯文本方式编写文件。

添加文件并提交到本地仓库:

git add file1.txt

git add file2.txt file3.txt

git commit -m "add 3 files."

掌握工作区的状态

使用git status命令告诉你有文件被修改过

git status

使用 git diff 命令查看某个文件被修改的内容

git diff readme.txt

git log命令显示从最近到最远的提交日志

git log

如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数:

git log --pretty=oneline

回退到某一个版本:

git reset --hard HEAD"^"

Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交1094adb...(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。

需要注意的是,在mac或linux上HEAD 后面的尖号不需要加引号,windows上需要,否则无法执行命令。

也可以使用 git reset --hard + 版本号 来回退到某一个指定版本,这个可以回退到最新的版本,如:

git reset --hard d3fc2

版本号不用写完整,前几位就行。

要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

git reflog

工作区和暂存区

工作区就是电脑里的文件夹‘ 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。 版本库包括: - 暂存区; - Git为我们自动创建的第一个分支master; - 以及指向master的一个指针叫HEAD。

git add 命令实际上就是把文件修改添加到暂存区, 而git commit 就是把暂存区的所有内容提交到当前分支。

提交后,用git diff HEAD -- readme.txt命令可以查看工作区和版本库里面最新版本的区别:

git diff HEAD -- readme.txt

git checkout -- file可以丢弃工作区的修改,让这个文件回到最近一次git commit或git add时的状态

git checkout -- readme.txt

注意:git checkout -- file命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令,我们在后面的分支管理中会再次遇到git checkout命令。

add到暂存区的文件如何撤销修改:git reset HEAD

git reset HEAD readme.txt

然后 丢弃工作区的修改:

git checkout -- readme.txt

小结: 当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。 当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD ,就回到了场景1,第二步按场景1操作。 已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

删除文件:有一个文件,已经add到版本库并commit到分支了,但是在本地把该文件删除了。现有两种情况:

确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit:

git rm test.txt

另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:

git checkout -- test.txt

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

远程仓库

本地仓库关联远程仓库:

git remote add origin git@server-name:path/repo-name.git;

origin 是远程库的名字就是origin,这是Git默认的叫法,也可以改成别的

推送本地提交到远程仓库:

git push -u origin master

用git push命令,实际上是把当前分支master推送到远程。 由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;

git push origin master

仓库克隆

要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。 Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。

git clone

分支管理

分支创建以及合并

创建分支,并切换到刚创建的分支:

git checkout -b dev

git checkout命令加上-b参数表示创建并切换 ,相当于 git branch dev 和 git checkout dev 两条命令的组合。

查看分支:

git branch

git branch命令会列出所有分支,当前分支前面会标一个*号。

合并dev分支的内容到master 分支:

先切换到master分支,再执行下面语句

git merge dev

git merge命令用于合并指定分支到当前分支

合并后删除dev分支:

git branch -d dev

小结: - 查看分支:git branch - 创建分支:git branch - 切换分支:git checkout - 创建+切换分支:git checkout -b - 合并某分支到当前分支:git merge - 删除分支:git branch -d

解决冲突

git log也可以看到分支的合并情况:

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

当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。 解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。

分支管理策略

合并dev分支,强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。

git merge --no-ff -m "merge with no-ff" dev

首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活; 那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;

Bug分支

把当前工作现场“储藏”起来,等以后恢复现场后继续工作:

git stash

查看工作现场:

git stash list

恢复暂存的内容:

git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除; 另一种方式是用git stash pop,恢复的同时把stash内容也删了:

你可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令:

git stash apply stash@{0}

Feature 分支:

开发一个新feature,最好新建一个分支;

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

git branch -D feature-vulcan

v多人协作

查看远程库的信息

git remote

或者,用git remote -v显示更详细的信息:

推送分支:

git push origin master

果要推送其他分支,比如dev,就改成

git push origin dev

master分支是主分支,因此要时刻与远程同步; dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步; bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug; feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。

推送时候有冲突:先pull最新代码,解决冲突后,再push:

git pull

如果git pull失败了,原因是没有指定本地dev分支与远程origin/dev分支的链接,根据提示,设置dev和origin/dev的链接:

git branch --set-upstream-to=origin/dev dev

然后再pull就OK

小结 - 查看远程库信息,使用git remote -v; - 本地新建的分支如果不推送到远程,对其他人就是不可见的; - 从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交; - 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致; - 建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name; - 从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

标签管理

发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。

打新标签 git tag

git tag v1.0

````

### 查看所有标签 git tag

git tag

默认标签是打在最新提交的commit上的,如果要对之前的commit打标签,只需要找到历史提交的comit id, git tag 就可以了

### 找到历史提交记录

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

### 对某个commit打标签

git tag v0.9 f52c633

### 查看所有标签列表

git tag

### 查看某个标签信息 git show

```

git show v0.9

创建带有说明的标签,用-a指定标签名,-m指定说明文字:

git tag -a v0.1 -m "version 0.1 released" 1094adb

注意:标签总是和某个commit挂钩。如果这个commit既出现在master分支,又出现在dev分支,那么在这两个分支上都可以看到这个标签。

删除标签:

git tag -d v0.1

推送本地标签到远程:

git push origin v1.0

一次性推送全部尚未推送到远程的本地标签:

git push origin --tags

删除远程标签:先从本地删除

git tag -d v0.9再远程删除

git push origin :refs/tags/v0.9

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值