Git的安装和使用教程

简介

        git和其他版本控制系统,例如svn有一个区别,就是git有暂存区的概念。工作区就是电脑里看到的目录,比如一个项目的文件夹。在工作区有一个隐藏的目录.git,这个不算工作区,二是Git的版本库。

        Git的版本库里存了很多东西,其中最重要的就是成为stage(或者叫index)的暂存区。同时GIt还会为我们自动创建第一个分支master,以及只想master的指针,叫做HEAD。git add指令就是把把文件修改先添加到暂存区,当执行git commit的时候,就是把暂存区里面的所有内容提交到分支。

安装

Windows下安装
Git - Downloads

Linux下安装

sudo apt-get install git

        git不能追踪二进制文件,例如图片、word文档等。它只会检测大小从100kb变成了150kb,具体里面改变了什么,git是不会知道的。

具体操作

1.创建git管理库

        在Linux中,是在终端上进行操作。Windows中,是下载好后,打开git bash来操作。git bash也是使用命令行。

        如果想要把一个文件进行版本追踪,收到,cd到该文件的目录下,然后运行指令

git init

        这行代码的意思是,初始化该目录下的本地文件,当该命令执行完成后,用

ls -a

来查看该文件夹下是否有.git文件生成, 这个文件生成了才会正确进行管理。

2.git管理库的使用

        把文件加入仓库,一共分三步。

创建文件;

vim test.txt # 进去随便写点啥

add到缓存区;

git add text.txt    # 将文件添加入缓存区,可以同时提交多个

commit到仓库;

git commit -m '这里写说明内容'

        -m后面的中的说明内容非常重要,是作为提交说明依据,不能乱写。

        在第一次提交时,肯定会出现以下问题,如下

$ git commit -m 'first commit test'
Author identity unknown

*** Please tell me who you are.

Run

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

to set your account's default identity.
Omit --global to set the identity only in this repository.

fatal: unable to auto-detect email address (got 'AAA@DESKTOP-F0PIRRK.(none)')

        这个问题就是让你添加一下你的姓名和邮箱,添加完成后,再提交一次就可以了。

3.测试git的回滚机制 

        先给text.txt文件中添加一点内容

echo this is content > text.txt    # 将this is content添加到text.txt中
cat text.txt                       # 查看文件中的内容
git add .                          # 将所有未提交的内容都提交上去
git commit -m 'this is second'     # 提交至仓库
vim text.txt                       # 随便写点啥进去
git status                         # 查看代码有没有改变

        当执行玩git status后,应该会出现以下内容

$ git status
On branch master
Changes not staged for commit:
    # 提示把文件放入缓存区,因为刚改完没放
  (use "git add <file>..." to update what will be committed) 
    # 使用这个命令放弃工作目录中的更改 
  (use "git restore <file>..." to discard changes in working directory)
        # modify表示被更改的文件是test.txt
        modified:   test.txt 

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

        此时,上面的modified是红色的,我们先把它add到缓存区,然后看一下状态,

git add text.txt
git status

         然后显示的内容如下所示

$ git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   test.txt

        对比上面两次的输出结果,我们发现此处的modified变成绿色了,然后提示添加进缓存的语句不见了。此时将其commit去仓库就可以了。

        提交进去后,我们再修改一下文件,然后通过下面语句来看看未提交的和版本库里的有什么区别。

git diff test.txt    # 查看当前text.txt与版本库里有什么区别

        输入玩上面代码以后,就会看到一下内容

$ git diff test.txt
# 下面这两行不用管,提示的是windows上面和Linux的按键冲突
warning: LF will be replaced by CRLF in test.txt.
The file will have its original line endings in your working directory
diff --git a/test.txt b/test.txt
index 40ae4a8..c1ae17e 100644
--- a/test.txt
+++ b/test.txt
@@ -1,2 +1,5 @@
    # 这两个是版本库中已经有的
 this is test
 此时是对文件二次提交后做修改
    # 下面的这个是还未提交、新加的内容
+this is third commit
+i want live longer
+and want to be ...

        然后确认无误后,就可以通过add和commit进行提交了。

!!!!!!!!!!!!!!!!!回滚机制来了

git log    # 查看以前提交的内容

        执行此命令后,肯能会出现冒号结尾,稍微等一会,它自己就消失了。由于执行完这个命令,出现的内容比较详细,所以还有一个简洁显示版本号的命令,如下:

git log --pretty=oneline   # 简洁显示版本号

        然后就是我们的版本回滚的指令了,如下:

git reset --hard HEAD^
git reset --hard 34f8c5b

        上面是两种版本回滚方式。

        第一个中,HEAD表示当前版本,^表示回到上一个版本,两个^表示往回推两个版本,要是有100个版本,可以同 HEAD~100

        第二个种,是通过版本的id来实现回滚的,id可能会很长,建议最少写7位。

        如果在回滚到过去的某个版本后,发现自己本来只需要回滚50个版本,结果回滚了100个,这个时候怎么办呢,如果此时的命令窗口没关,可以去在上面的log中找到自己的版本号再滚回去,如果命令行窗口关了,就要通过其他的办法了。

        重新打开命令窗口,输入以下指令

git reflog    # 开发之前的操作日志

        然后在日志中找到你想回去的版本,然后输入

git reset --hard cbc234e
git log

        然后,都就回来了。


Git和GitHub交互

        先打开git bash,然后再命令行中输入下面指令

cd ~/.ssh   # 查看有没有ssh密匙

        如果报错了,说明再电脑本地没有ssh密匙,需要去配置,先输入以下指令:

ssh-keygen -t rsa -C "youremail@example.com"

        后面跟的字符串就是你绑定GitHub时用的邮箱,然后输入完指令后,按照以下流程走。

1.登录GitHub,点击自己的头像,并点击settings

2.在页面左侧点击SSH and GPG keys选项,并点击New SSH key按钮

3.去C:\Users\Administrator\.ssh路径下,找到.pub文件,复制里面的内容,粘贴到Github上就可以了

1.克隆项目

git clone 项目地址

       项目地址在GitHub上都能够找到。从哪里克隆过来的,就会推向哪里,所以有时候需要指定分支克隆:

git clone -b develop 克隆地址

         上面代码的意思是,克隆该地址的develop分支中的代码。

2.分支操作

git branch -M 名字             # 更改分支名字
git branch new                   # 创建new分支
git checkout -b new            # 创建并切换到new分支上
git checkout develop          # 切换到develop分支上 

git merge develop              # 融合develop分支上的代码

git branch -d local               # 删除本地的local分支

git push origin develop        # 把develop分支代码推送到远程的develop分支上

git tag -a v1.4 -m '1.4版本'        # 给当前版本打上标签,-a是指定标签名字,-m是说明

git tag -a v1.5 9fceb0          # 给指定的版本打上标签

 注:在默认情况下,git push并不会把标签传送到远程服务器上,只有通过显示命令才能分享标签到远程仓库,命令如下

git push origin v1.5   # 把v1.5标签推送至远程仓库
git push origin --tags   # 把本地所有标签都推送至远程仓库

3.添加至远程仓库

git remote add origin git@github.com:NFTSSTFN/123456.git

        有时候在添加至远程仓库时会出现以下情况:

$ git push origin local-main
error: src refspec local-main does not match any
error: failed to push some refs to 'github.com:NFTSSTFN/123456.git'

        如果出现以上情况,可以用下面这两个操作

git pull --rebase origin master
git push --set-upstream origin master

4.推送与提取

git push
git pull

        假如远程库A中有三个分支(branch1、branch2、branch3)

        远程库B有三个分支(branchX、branchY、branchZ)

        本地仓库有两个分支(local1、local2)

        当初始状态时,local1和local2和任何一个远程分支都没有关联,也就是没有upstream。当通过以下命令

git branch --set-upstream-to=A/branch1 local1

        会给local1和branch1两个分支建立关联,也就是让local1的upstream指向的时branch1。这样做的好处就是当在local1上执行git push或者git pull时,不需要附加其他参数,Git会自动将local1分支上的内容push到branch1上去。或者自动从branch1上pull下来。

5.操作gitblit的一次流程

# 1.首先在gitblit中创建一个项目
# 2.找到自己需要添加至gitblit中的项目然后
    git init
# 3.指定该项目的远程连接
    git remote add origin http:192.168.1.10:8000/My_Project.git
# 4.将项目添加进本地仓库并提交
    git add .
    git commit -m 'The first commit'
# 5.将项目推送至gitblit
    git push -u origin master    # 如果这个报错,就用下面的
    git push -f origin master
# 6.设置git push指令默认推送地址
    git push --set-upstream origin master

完成设置后,就可以通过 git push 来直接进行提交了

6. Git大小写不敏感问题

        具体解决如下(打开git Bash):
        1、使用 git config --get core.ignorecase 查询,如果为true
        2、执行 git config core.ignorecase false
        3、再次执行 git config --get core.ignorecase,会发现已经修改为false了,即开启了GIT仓库的大小写敏感
        (注意:查询结果为true,则表示本地GIT对大小写不敏感,为false,则对大小写敏感)

7. 远程仓库重定向

git branch -a                                                   查看当前分支名称,例如我的叫origin

git remote remove origin                                删除远程分支

git remote add origin '远程地址'                     添加新的远程连接

git push --set-upstream origin master            设置默认推送地址

git push                                                          推送项目

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值