GIT笔记

作者: 佛系跳伞运动员 | 来源:发表于2018-03-30 18:13 被阅读25次

GIT

git init

初始化git仓库,会在目录下生成一个.git的隐藏文件,里面保存着本地库的版本管理信息

git status

git status命令可以让我们时刻掌握仓库当前的状态

  • 以下代码表示README.md文件在master分支下被修改
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.md

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

git diff

虽然Git告诉我们README.md被修改了,但如何能看看具体修改了什么内容呢,我们就使用git diff <文件名>

  • 可以看到README.md文件版本的变化(使用q退出diff)
diff --git a/README.md b/README.md
index d8036c1..013b5bc 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,2 @@
-Git is a version control system.
+Git is a distributed version control system.
 Git is free software.
\ No newline at end of file

git log

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

  • git log可以看到你由近到远的提交记录
commit 3628164fb26d48395383f8f31179f24e0882e1e0
Author: xxx
Date:   Tue Aug 20 15:11:49 2013 +0800

    append GPL

commit ea34578d5496d7dd233c827ed32a8cd576c5ee85
Author: xxx
Date:   Tue Aug 20 14:53:12 2013 +0800

    add distributed

commit cb926e7ea50ad11b8f9e909c05226233bf755030
Author: xxx
Date:   Mon Aug 19 17:51:55 2013 +0800

    wrote a readme file

git reset

git reset 切回指定版本,

  • 用HEAD表示当前版本,
  • 上一个版本就是HEAD^,
  • 上上一个版本就是HEAD^^,
  • 当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
  • 或者是指定commit id(版本号没必要写全,6-7位就可以了,Git会自动去找。)

git reset --hard HEAD^回到上一个版本

git reset 撤销暂存区

git reset HEAD <文件名>从暂存区中移除该文件

git reflog

Git提供了一个命令git reflog用来记录你的每一次命令

  • 使用场景:现在,你回退到了某个版本,关掉了电脑,第二天早上就后悔了,想恢复到新版本怎么办?找不到新版本的commit id怎么办?当你reset到上几个版本后反悔了想要回到之前的版本就可以使用git reflog查看之前执行的命令和对应的commit id这样就可以根据commit id回到指定的版本了

小结一波:

三个关键词:工作区,暂存区,版本库

暂存区的概念

我们执行git add指令后代码被提交到了哪?其实就是被提交到了暂存区,对应.git/index(stage)文件就是暂存区

HEAD的概念

HEAD其实就是一个指针指向当前分支,如我们当前是master分支HEAD就指向master分支,我们执行完add将代码提交到暂存区,再执行commit方法就把暂存区的东西一次性提交到HEAD指向的分支
git管理的是修改而不是文件,如何理解?第一次修改 -> git add -> 第二次修改 -> git commit 我们可以看出只有第一次修改被提交就是因为git提交的只是修改的记录而不是整个文件,第二次的修改记录不存在暂存区中所以没被提交

分支(branch)

上面提到HEAD和master分支,HEAD是指向当前分支的,如果当前分支是master那么HEAD就是指向master,而master是指向当前分支的最后一次提交。
现在我们在master指向的提交上建立一个分支dev,并且使用dev分支,这是HEAD就指向dev分支,而dev就指向创建分支时对应的master分支指向的提交,接下来在dev分支上进行一次提交,这时master分支还是指向master分支的最后一次提交,dev分支指向了最新的dev分支上的提交,HEAD指向了dev

git branch <分支名>

创建分支。git branch dev创建dev分支

git branch

列出所有分支,当前分支前有*(HEAD指向的分支)

git branch -d <分支名>

该命令用于删除分支

git checkout -d dev

git branch --set-upstream <本地分支名> origin/<远程分支名>

该命令用于本地分支和远程分支的关联

git branch --set-upstream dev origin/dev

-checkout

git checkout -- <文件名> 注意:中间的--很重要没有--就变成了切换分支的命令了

撤销操作:简而言之,就是让这个文件回到最近一次git commit或git add时的状态。
如果该文件在暂存区中有修改记录,那么git checkout -- <文件名>就回到暂存区的状态
如果该文件没有被提交到暂存区,那么git checkout -- <文件名>就回到版本库的状态

git checkout <分支名>

切换分支。git checkout dev切换到dev分支

git checkout -b <分支名>

创建并且切换到该分支

git checkout -b dev

git checkout -b <本地分支名> origin/<远程分支名>

创建本地分支并关联相应的远程分支,本地和远程分支的名称最好一致

git checkout -b dev origin/dev
  • 相当于
git branch dev
git checkout dev

git config

  • 查看当前目录下的config配置列表
git config --list
  • 配置全局config
# 配置全局用户名
git config --global user.name 'XXX'
  • 配置项目私有config
# 配置项目私有用户名
git config --local user.name 'XXX'

git clone

  • 克隆远程仓库master分支到本地
# 克隆远程仓库到本地目录
git clone xxx
  • 克隆远程仓库其他分支到本地
git clone -b 分支名 git远程地址
  • 查看本地仓库分支
git branch

git tag 给当前仓库添加标签主要用来设置版本号

  • 给本地仓库添加标签
git tag -a v0.1 -m 'v0.1'
  • 将本地残酷标签推送到远程仓库
git push --tag

添加本地GIT忽略清单文件

  • 在代码库文件夹的根目录添加一个.gitignore文件,此文件用于说明忽略的文件有哪些

将github上的项目移至本地

  • 方法1:
git init
git remote add origin github地址      //添加origin
// git pull <远程主机名> <远程分支名>:<本地分支名>
git pull origin master                //从origin源下更新master分支
// git pull origin master:master 合并分支名相同可以简化为 git pull origin master
  • 方法2:
git init
// git clone <版本库的网址> <本地目录名>
git clone github地址                      //克隆
git clone -b 指定的分支名字 github地址     //克隆某分支

将本地代码提交到github上

  • 方法1:
// 远程主机名:可以在.git下config remote下查看
// <远程分支名><本地分支名>:本地的哪个分支提交到远程的哪个分支
// git push <远程主机名> <本地分支名>:<远程分支名>
git push origin master                //先commit到本地后,push到origin源master分支上
// git push origin master:master 合并分支名相同可以简化为 git push origin master

GitLab/GitHub SSH关联(mac/linux)

1.检查是否有秘钥对

ls -al ~/.ssh检查是否显示有id_rsa.pub或者id_dsa.pub存在,如果存在请直接跳至第3步。

2.生成秘钥对

ssh-keygen -t rsa -C ”email”,注意这个地方的邮箱地址需要和gitlab/github上对应,一直回车密码可以为空,这样就会在/Users/用户名/.ssh/下生成id_rsa和id_rsa.pub

3.配置GitLab/GitHub SSH

打开GitLab/GitHub关于SSH的配置,一般叫做ssh key。
cat id_rsa.pub
将秘钥复制到GitLab/GitHub的key中

4.修改git配置

git config --global user.name '用户名'
git config --global user.email '刚刚生成秘钥填的邮箱'

5.git clone ssh

相关文章

网友评论

      本文标题:GIT笔记

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