git常用操作详细版

最强参考:廖雪峰git教程
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

git安装 (windows)

在 https://git-for-windows.github.io/ 或者 https://pan.baidu.com/s/1kU5OCOB#list/path=%2Fpub%2Fgit 上下载msysgit,
安装完成后,在开始菜单里找到 “Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明 Git 安装成功!

git常用操作详细版_第1张图片
image.png

安装完成后,还需要最后一步设置,在命令行输入:

git config --global user.name "Your Name"
git config --global user.email "[email protected]"

git初始化

新建一个空文件夹,通过上面的msysgit进入当前文件夹,然后使用如下命令创建git空间

git init
image.png

为了不必要的麻烦,请使用UTF-8 编码

git添加文件

首先在上述的文件夹下新建一个文件 testGit.txt
内容如下:

Git is a version control system.
Git is free software.

使用 git add将上述文件添加到仓库

git add testGit.txt

然后提交,并且附加上传信息

git commit -m "wrote a testGit file"

其中-m后面的信息是注释信息,上传文件到仓库一共包括两步,

git add file
git commit -m "add a file"

可以多次add一次commit

git查看当前文件状态

git status

git查看文件和之前上传的不同

git diff
git常用操作详细版_第2张图片
image.png

绿色的是文件中修改的内容

查看文件提交历史版本信息

git log
git常用操作详细版_第3张图片
image.png

简化输出可以使用

git log --pretty=oneline
image.png

前面的一大串数字就是git的版本号,版本号是递增的

git版本回退

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

使用reset命令进行版本回退

git reset --hard HEAD^
image.png

此时的版本为上一个版本的信息

这时得到的第二个版本的信息,此时如果想回到第三版怎么办呢,这时在刚才没关闭的窗口中,找到刚才git log的第三个版本的版本号,然后输入

git reset --hard 2ab95bc82af650eefa29af39cf2062a0f13fe34e
git常用操作详细版_第4张图片
image.png

这时候就回到了第三个版本的文件

git版本回退进阶

如果关掉了当前窗口,找不到版本号了,那如何从第二版本进入第三版本呢,这时还必须找到第三个版本的commit id,通过使用命令git reflog来完成

git常用操作详细版_第5张图片
image.png

找到第三个版本添加 GPL的commit Id 2ab95bc
然后

git reset --hard 2ab95bc
image.png

工作区 、 缓存区、 版本库 关系

git常用操作详细版_第6张图片
image.png

每次git commit之前必须先git add,不然如果没有add,内容没有在缓冲区就不会被添加到版本库

丢弃工作区的修改

如果在工作区修改了文件,还没有git add,这时候并不需要这些修改,可以使用git checkout丢掉工作区的修改

git checkout -- testGit.txt

丢掉缓存区的修改

如果在工作区修改了文件,也提交到了缓存区,不过没有提交到版本库,可以使用git reset回退到刚才在缓存区的修改

git reset HEAD testGit.txt
image.png

此时,刚才提交到缓存区的内容就丢掉了,然后再使用上面的git checkout 命令丢掉工作区的修改就好了

git分支branch

git创建分支

$ git checkout -b dev
Switched to a new branch 'dev'

等价于

$ git branch dev
$ git checkout dev
Switched to branch 'dev'

查看当前分支

git branch

切换到其他分支

$ git checkout master
Switched to branch 'master'

合并分支

git merge dev
# 将 dev部分分支和master部分合并

删除分支

git branch -d dev

远程仓库

1、创建SSH Key

ssh-keygen -t rsa -C "[email protected]"

产生id_rsa和id_rsa.pub这两个文件,分别是私钥、公钥

2、登陆 GitHub,打开 “Account settings”,“SSH Keys” 页面:

然后,点 “Add SSH Key”,填上任意 Title,在 Key 文本框里粘贴id_rsa.pub文件的内容:

git常用操作详细版_第7张图片
github-addkey-1

点 “Add Key”,你就应该看到已经添加的 Key:

git常用操作详细版_第8张图片
github-addkey-2

3、添加远程库
在github上找到 “Create a new repo” 按钮,创建一个新的仓库,在 Repository name 填入版本库的名字如learngit2,其他保持默认设置,点击 “Create repository” 按钮,就成功地创建了一个新的 Git 仓库

4、本地与github版本库关联
在本地的learngit2仓库下运行命令,这样就将本地的learngit2文件夹和github的版本库相关联了

git remote add origin [email protected]:minning/learngit2.git

其中 minning 是自己的名字
5、推送本地库到github
把本地库的所有内容推送到远程库上

git push -u origin master
git常用操作详细版_第9张图片
image.png

把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。

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

推送成功后,可以立刻在 GitHub 页面中看到远程库的内容已经和本地一模一样

以后进行推送,使用如下命令就可以了

git push origin master

5-2、题外:如果新建仓库repository TargetOffer时添加了README或者License,在本地执行git push -u origin master会报 error: failed to push some refs to ' 错误


git常用操作详细版_第10张图片
image.png

此时应该执行下面的命令:

git remote set-url origin [email protected]:minning/TargetOffer.git
git remote add github [email protected]:minning/TargetOffer.git
git remote set-url origin [email protected]:minning/TargetOffer.git

从远程库克隆

从远程库将内容克隆回本地
1、在github上新建一个repository仓库,仓库名字为gitskill2,此时远程仓库就准备好了
2、在本地找到一个放代码的地方

git clone https://github.com/minning/gitskill2

其中minning是个人id,gitskill2是仓库名字,通过这一行命令就将远程的仓库clone到了本地

你可能感兴趣的:(git常用操作详细版)