美文网首页
Git使用教程入门笔记

Git使用教程入门笔记

作者: 天神Deity | 来源:发表于2018-07-24 00:01 被阅读0次

本文内容为 廖雪峰Git教程 的简明笔记

首次安装需要进行配置(每个机器都必须自报家门:你的名字和Email地址)

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

TODO 注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,
当然也可以对某个仓库指定不同的用户名和Email地址。

通过git init命令把这个目录变成Git可以管理的仓库:

>PS D:\GithubProject\GitLearn> git init
Initialized empty Git repository in D:/GithubProject/GitLearn/.git/

把一个文件放到Git仓库

第一步,用命令git add告诉Git,把文件添加到仓库:

$ git add .\ReadMe.txt

第二步,用命令git commit告诉Git,把文件提交到仓库:

$ git commit -m "this is ReadMe.txt"

为什么将文件放置到Git仓库需要两个步骤?
git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit就可以一次性把暂存区的所有修改提交到分支

git status命令看看本地仓库状态

PS D:\GithubProject\GitLearn> git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   ReadMe.txt

no changes added to commit (use "git add" and/or "git commit -a")

git status可以告诉我们哪些文件被修改了。但是如果你想了解修改的内容,那么你可以使用 git diff 命令

如果git status告诉你有文件被修改过,用git diff可以查看修改内容。

修改后的内容提交仍使用 git add/git commit这两个方法.

使用git log 查看提交的历史记录

PS D:\GithubProject\GitLearn> git log
commit be7f7285addec6798a52798556bec9e38184976b (HEAD -> master)
Author: MeDeity <langrenbule@gmail.com>
Date:   Mon Jul 23 22:39:21 2018 +0800

    Unfortunately, git diff does not support Chinese very well.

commit 53ff37a1a9801489a9b8a5e21eaff2252a6e280c
Author: MeDeity <langrenbule@gmail.com>
Date:   Mon Jul 23 22:28:33 2018 +0800

    this is ReadMe.txt

如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数:git log --pretty=oneline
需要友情提示的是,你看到的一大串类似1094adb...的是commit id(版本号),和SVN不一样,Git的commit id不是1,2,3……递增的数字,
而是一个SHA1计算出来的一个非常大的数字,用十六进制表示,
而且你看到的commit id和我的肯定不一样,以你自己的为准

回退版本

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

PS D:\GithubProject\GitLearn> git reset --hard HEAD^//回退到上一个版本
HEAD is now at 53ff37a this is ReadMe.txt

此时使用git log查看现在版本库的状态:

PS D:\GithubProject\GitLearn> git log

commit 53ff37a1a9801489a9b8a5e21eaff2252a6e280c (HEAD -> master)
Author: MeDeity langrenbule@gmail.com
Date: Mon Jul 23 22:28:33 2018 +0800

this is ReadMe.txt

发现最新一次的提交记录也没了。难道就这样永久丢失了吗?

如果能找到commit id,就可以使用以下的命令恢复到最新的版本.

PS D:\GithubProject\GitLearn> git reset --hard be7f7...4976b
HEAD is now at be7f728 Unfortunately, git diff does not support Chinese very well.

怎么找到 commit id?那么久使用git reflog(在Git中,总是有后悔药可以吃的。当你用$ git reset --hard HEAD^回退到add distributed版本时,再想恢复到append GPL,
就必须找到append GPL的commit id。Git提供了一个命令git reflog用来记录你的每一次命令)

撤销修改

1.尚未提交到缓冲区(未执行git add)的文件可以通过git checkout -- <fileName> 进行撤销修改

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

2.已经被提交到缓存区(执行了git add)的文件git reset HEAD <file> 实现撤销

PS D:\GithubProject\GitLearn> git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   ReadMe.txt

git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。

再用git status查看一下,现在暂存区是干净的,工作区有修改:

PS D:\GithubProject\GitLearn> git reset HEAD .\ReadMe.txt
Unstaged changes after reset:
M       ReadMe.txt
PS D:\GithubProject\GitLearn> git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   ReadMe.txt
//还记得如何丢弃工作区的修改吗?
PS D:\GithubProject\GitLearn> git checkout -- .\ReadMe.txt

删除文件

//删除本地文件
PS D:\GithubProject\GitLearn> rm .\remove.txt
//删除文件,并提交到缓存区
PS D:\GithubProject\GitLearn> git rm  remove.txt
//提交更改
PS D:\GithubProject\GitLearn> git commit -m "rm remove.txt" 

初次使用Github相关配置

1.创建SSH Key

ssh-keygen -t rsa -C "youremail@example.com"//可以不填写密码

2:登陆GitHub,打开“Account settings”,“SSH Keys”页面:
然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容.

3.将本地仓库推送到github上

git remote add origin git@github.com:MeDeity/GitLearn.git
git checkout -b dev //新建分支

以上命令其实是两条命令的简写

git branch dev
git checkout dev

使用git branch查看当前所有的分支,当前分支前会有*号标注

如果当前分支为master,要合并dev分支

git merge dev

合并完成后就可以删除dev分支

git branch -d dev

当合并过程中存在冲突时,则需要先解决冲突才能重新合并,使用git log --graph命令可以看到分支合并图

通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。
如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。

//因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去
git merge --no-ff -m "merge with no-ff" dev

当前有dev分支正在开发的情况下,有bug分支需要修复。可以使用git stash命令存储现场

//可执行多次
git stash

完成bug修正后,再去恢复现场

//查看stash列表
git stash list
//应用stash
git stash apply stash@{0}
//删除stash
git stash drop  stash@{0}
//等价于 git stash apply + git stash drop
git stash pop

Feature分支

开发一个新feature,最好新建一个分支;
如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>强行删除

相关文章

  • git技术,GitHub、GitLab

    git学习 Git教程(小白快速入门版) Git教程(简化版) git详细学习 Gitlab的管理使用手册git初...

  • Git使用教程入门笔记

    本文内容为 廖雪峰Git教程 的简明笔记 首次安装需要进行配置(每个机器都必须自报家门:你的名字和Email地址)...

  • Git book

    目录 git community book git入门 git笔记 git 用法 git安装使用手册 git命令大...

  • GIT 笔记一:基本操作

    GIT 笔记一:基本操作 SVN 笔记一:入门 Git已经非常流行,网络上的教程很多。这里做个归纳吧。命令行操作很...

  • git的学习笔记-入门

    PS:小白的入门笔记,希望能有用,主要参考廖君Git教程 操作环境说明: github仓库 https://git...

  • 用Git进行版本控制(四)向仓库中添加commit

    前言:教程来源于Udacity的免费教程-用Git进行版本控制,这里仅是个人的笔记,参考使用。 git add:将...

  • 用Git进行版本控制(五)撤销更改

    前言:教程来源于Udacity的免费教程-用Git进行版本控制,这里仅是个人的笔记,参考使用。 git commi...

  • 用Git进行版本控制(四)分支Branch

    前言:教程来源于Udacity的免费教程-用Git进行版本控制,这里仅是个人的笔记,参考使用。 git tag:给...

  • Git版本控制

    《GitHub入门与实践》笔记推荐Git练习网站:LearnGitBranching 初次使用时,使用下列命令设置...

  • sass/git/gulp

    sass用法指南sass语法 常用git指令git-book gulp详细入门教程gulp使用指南segmentf...

网友评论

      本文标题:Git使用教程入门笔记

      本文链接:https://www.haomeiwen.com/subject/cofsmftx.html