git使用笔记(完全)

1、创建版本库

1.1 注册信息

安装(一般Linux都自带了)后 首先要设置名字和email

$ git config --global user.name "cws"

$ git config --global user.email 362535136@qq.com

 

1.2新建仓库

版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。所以,创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录: 

      如果你使用Windows系统,为了避免遇到各种莫名其妙的问题,请确保目录名(包括父目录)不包含中文。   

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

 

前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。

编写一个test.txt文件(注意 windows不要使用记事本 )

 

一定要放到gitTest目录下(子目录也行)

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

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

 

2.版本管理

2.1 二次提交

修改之前文件

运行git status命令看看结果:

 

git diff这个命令查看修改内容:

 

再次提交(同上)

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

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

 

要随时掌握工作区的状态,使用git status命令。

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

 

 

 

使用git log 查看提交记录

 

2.2 版本回退

 使用 git log --pretty=oneline 查看简化的日志信息

 

前面一串数字是版本号

 

在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

这里演示回到上个版本git reset --hard HEAD^

 

使用git log 查看  第二次更改信息已没有

 

如果想在回到 当前版本 需要知道当前版本号 使用git reflog 可以查看之前执行过的命令信息

 

使用 git reset --hard 6083b65 (当前版本)

)

总结    git reset –hard  版本号  回滚版本

git log  可以查看提交历史,以便确定要回退到哪个版本。

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

2.3工作区暂存区

工作区(Working Directory) 

就是电脑里的目录

版本库(Repository)

工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD

第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;

第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。

需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。

2.4 文件撤销修改

修改文件内容

 

再提交前放弃修改的内容  git checkout -- test.txt  在没有git add 前执行恢复到最近一次git add 或者 git commit状态

 

如果已经执行完git add  需要恢复原状态

分为两步

一   将状态恢复到git add 前   git reset HEAD test.txt

二    放弃修改内容  git checkout -- test.txt

 

总结 1:丢弃工作区的修改时,用命令git checkout -- file

2:添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到1

2.5 文件删除与撤销

新建文件用于测试

 

提交至仓库

 

1.直接删除文件夹文件(或使用rm) 但此时工作区和版本库就不一致了

此时使用git status 查看状态

 

2.如果从版本库中彻底删除 则使用 git rm cwstest.txt 并且提交

 

如果不想删除可以使用git checkout -- cwstest.txt 恢复工作区状态

git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以恢复

 

3远程仓库

 3.1准备工作

一  创建SSH Key

ssh-keygen -t rsa -C "17864282307@163.com"   输入自己github 的邮箱地址 会自动创建key

 

可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

二  github配置ssh key

登录github

 

填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容 保存

 

3.2 添加远程库(github)

其他默认(第一次新建 可能会提示验证邮箱)

 

gitHub上的仓库还是空的,GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。

 

 使用git remote add origin https://github.com/chenwenshuo/cwstest.git 将远程仓库与本地仓库关联

 

远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。

3.3本地库的所有内容推送到远程库上

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

 

这时github就会看到

 

在此之后只要本地作了提交,就可以通过命令:

$ git push origin master

把本地master分支的最新修改推送至GitHub

总结  关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git

关联后,使用命令git push -u origin master第一次推送master分支的所有内容;

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

3.4项目克隆

新建一个远程仓库 勾选Initialize this repository with a README,这样GitHub会自动为我们创建一个README.md文件。创建完毕后,可以看到README.md文件:

 

使用git clone  git@github.com:chenwenshuo/cwstest2.git 执行后就可以看到本地文件

这个警告不影响项目如需解决只需要在hosts文件添加 ip  github.com即可解决

 

 

  1. 分支

你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。

5.1原理

Git都把提交串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。

一开始的时候,master分支是条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点   每次提交分支都会变长

 

创建新的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在de v上

  

现在开始,对工作区的修改和提交就是针对dev分支了,比如新提交一次后,dev指针往前移动一步,而master指针不变

 

dev上的工作完成了,就可以把dev合并到master上。最简单的方法,就是直接把master指向dev的当前提交,就完成了合并

 

5.2创建与合并分支(Fast forward提交)

创建dev分支,然后切换到dev分支

git checkout   -b 分支名   创建并切换,相当于以下两条命令

git branch dev

git checkout dev

 

git branch  命令查看当前分支:

 

在dev分支上正常提交,这里演示对test.txt进行修改

 

切换至master分支 查看test.txt 内容依然是之前提交   切换分支使用 git checkout  分支名

6

把dev分支的工作成果合并到master分支上  使用git merge dev 命令 可以看到master分支已经修改

Fast-forward,是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快。

 

 

删除dev分支使用  git branch -d dev 命令

 

 

查看分支:git branch

创建分支:git branch <name>

切换分支:git checkout <name>

创建+切换分支:git checkout -b <name>

合并某分支到当前分支:git merge <name>

删除分支:git branch -d <name>

5.3分支冲突

两个分支都提交新内容会出现冲突

一.新建分支dev2 并修改test.txt内容 提交

 

二 回到master 修改test.txt 并提交

 

此时 由于两个分支都进行了提交 所以合并分支会出现冲突

使用git marge dev2 提交

 

此时查看test.txt内容

 

这事要自己进行修改内容 再次 git add   git commit

 

 

 

使用git log --graph --pretty=oneline --abbrev-commit可以查看合并状态

 

 

Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。

解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。

5.4分支合并(非Fast forward模式)

合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。

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

  •  新建一个分支并修改提交test.txt(直接修改文本)

 

切换至master 合并dev分支,请注意--no-ff参数,表示禁用Fast forward

git merge --no-ff -m "使用—no-ff提交dev3 “ dev3   因为本次合并要创建一个新的commit所以需要-m

 

 

5.5 bug分支

 当你发现之前提交内容出现bug时,,需要对之前内容进行修改,而又不想提交现在进行编辑内容时 就可以在出现bug的分支上新建bug分支 修改后在于主分支合并 这样即修改了之前内容 又没有提交正在编辑内容

  

新建一个文件cwstest 但是我不提交 再在bug分支上修改之前的test.txt 修改后合并 再回复至编辑cwstest文件状态

1.新建文件git add 但不提交 查看此时状态  此时提示cwstest文件未提交

 

 

2.把当前状态隐藏 使用git stash命令   在查看状态

发现此时工作区是干净的饼没有新建的cwstest文件

 

3.新建bug分支  修改test.txt文件(修改或添加内容都可)并提交

 

4.合并分支 将bugtest01 合并只master分支

 

5.恢复工作去   使用git stash list命令可以查看隐藏的工作区

 

然后恢复之前工作区状态

  1.   git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;
  2.  git stash pop,恢复并把stash内容删除

 

可以看到已经恢复了

 

git stash 隐藏正在工作的公主去状态,然后去修复bug

 git stash pop,回到工作状态

5.6 强制删除未合并分支

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

5.7 推送与拉取

  新建 仓库在上面内容点击即可跳转点击  

将一个项目与远程仓库建立连接后 通过     用git remote –v 看远程仓库信息

 

在本地修改后 可直接通过git push origin master 提交(可能会提示验证邮箱 github官网验证即可)

如果想推送其他分支使用 git push origin 其他分支名 即可

 

新建一个cwsbranch分支进行演示 push这个分支

 

在github中查看

 

如果你在另一个地方对远程仓库进行了修改  而本地仓库又要提交新更新 就需要使用 git pull  拉取更新内容

 

然后再push即可

默认pull只会拉取master

在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name本地和远程分支的名称最好一致;

建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name

6 git在idea 中使用

6.1配置git 与github

配置git.exe

 

配置你在Github上注册的账户:

6.2 分享与获取项目

选择菜单VCS — Import into Version Control — Share project on Github

 

然后他会提示

 

点击share后 会提示你添加内容与提交信息

 

登录github就会看到

 

 

获取Github项目:

选择菜单”VCS — Checkout from Version Control — Github”

 

在url中输入项目地址 点击clone

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值