Git 使用

每次用都是想不起来指令,今天继续摸个鱼,整理一下Git部分的使用,记录下来。

1 安装

首先,Linux下安装很简单

sudo apt-get install git

Windows安装,直接去官网下载,下载完成后,一路安装到完成就行,安装完成后,会看到Windows软件中多了 Git Bash 等,点开就可以使用Git了。

2 仓库的初始化以及基本配置

可以自己新建一个仓库,用于存储代码,或者进去现有的代码文件夹,然后

git init

对代码仓库进行初始化。
或者从Github上直接clone下来一份代码也可以,

git clone https://github.com/xxxxxxx/xxxxxxxxx.git

然后,进行相关配置
设置用户名

git config --global user.name 'your-name'

设置邮箱

git config --global user.email '575066873@qq.com'

查看相关设置

git config --list

3 添加文件到版本库

在版本库的路径下,编辑好对应的文件,比如 文件 a.txt,文件夹 test,
首先,需要把文件添加到缓存区

git add a.txt test/

然后,在 a.txt 文件中进行了修改,如果修改是必要的,需要再 add 一下

git add a.txt

最后,提交到版本库,

git commit -a -m " add a.txt test ,git learning "

至于 git commit 后面的参数 -a -m 这里简单的说一下

用法:git commit [<选项>]   [--] <路径规格>...
    -q, --quiet                                提交成功后不显示概述信息
    -v, --verbose                           在提交说明模板里显示差异

提交说明选项
    -F, --file <文件>                      从文件中读取提交说明
    --author <作者>                    提交时覆盖作者
    --date <日期>                         提交时覆盖日期
    -m, --message <说明>        提交说明
    -c, --reedit-message <提交>
                                                        重用并编辑指定提交的提交说明
    -C, --reuse-message <提交>
                                                        重用指定提交的提交说明
    --fixup <提交>                        使用 autosquash 格式的提交说明用以修正指定的提交
    --squash <提交>                   使用 autosquash 格式的提交说明用以压缩至指定的提交
    --reset-author                       现在将该提交的作者改为我(和 -C/-c/--amend 参数共用)
    -s, --signoff                             添加 Signed-off-by: 签名
    -t, --template <文件>          使用指定的模板文件                                              
    -e, --edit                                  强制编辑提交
    --cleanup <default>           设置如何删除提交说明里的空格和#注释
    --status                                    在提交说明模板里包含状态信息
    -S, --gpg-sign[=<key-id>]
                                                        GPG 提交签名
提交内容选项
    -a, --all                                     提交所有改动的文件
    -i, --include                            添加指定的文件到索引区等待提交
    --interactive                          交互式添加文件
    -p, --patch                              交互式添加变更
    -o, --only                                 只提交指定的文件
    -n, --no-verify                       绕过 pre-commit 和 commit-msg 钩子
    --dry-run                                显示将要提交的内容
    --short                                     以简洁的格式显示状态
    --branch                                 显示分支信息
    --ahead-behind                   计算完整的领先/落后值
    --porcelain                             机器可读的输出
    --long                                       以长格式显示状态(默认)
    -z, --null                                  条目以 NUL 字符结尾
    --amend                                  修改先前的提交
    --no-post-rewrite                绕过 post-rewrite 钩子
    -u, --untracked-files[=<模式>]
                                                       显示未跟踪的文件,“模式”的可选参数:all、normal、no。(默认:all)

常用的有

git status                      // 查看仓库状态,可以显示处有哪些文件被修改过
git diff                           // 查看仓库中的代码中修改了的地方

4 版本回退

个人觉得这个功能,是Git中的最神奇的功能。
在工作中,不可能记住每次代码都改了哪些内容,每个版本之间有啥区别,但是Git中就可以有这个功能,只需要输入一下指令:

git log

然后,就会弹出来每个版本的log记录比如说我的一个 Eigen 测试小程序,
在这里插入图片描述
这里解释一下,第一行 commit 是 commit ID 就是每次 git commit 时自动生成的版本号,下面就是 管理员,以及 commit 的时间信息了 , 最下方的是 每次 git commit 时 -m 后面的信息,所以每次 commit 时,这个信息一定要认真写,不然时间久了,天晓得当时自己干了啥。其中,有 HEAD 那一行表示当前的版本,如果想回到上一个版本,

git reset --hard HEAD^

此时,打开相关代码,发现已经回到了上一个版本,git reset 回退到某个版本,–hard 不管他,估计就是强制的意思, HEAD^ 表示上一个版本,上两个版本就是 HEAD^^ , 现在在 git log 一下,就会发现原先最近的版本没了
在这里插入图片描述
好,现在又后悔了,想回到 " add the installation of Eigen " 版本,咋办?
下面有两个方式,

  1. 向上翻原来的 bash 窗口,找到 " add the installation of Eigen " 的 commit ID ,然后
git reset --hard cf6487ced277440bf1115bcc363cf3279a67be54

这里就是见证奇迹的时刻了,发现版本又回到最新 " add the installation of Eigen " 的那一版了。
当然这么做是有一个前提的,如果 原来那个有 commit ID 的窗口被关掉了,那这个方式就走不通了。

  1. 现在来说一下第二个方式,此时 bash 窗口被关了,找不到 commit ID 了,然后按照以下操作,
git reflog

然后输出下图
在这里插入图片描述
现在可以看到 " add the installation of Eigen " 的 commit ID 为 cf6487c,然后

git reset --hard cf6487c

好,需要的版本又回来了,Git中的后悔药一直都在,这一点最好用的功能了。

5 管理文件的修改

  1. 首先文件在未 add 到缓存区之前,只需要

    注意 -- 后一定要有空格,不然就是切换分支的指令了 ```这样就丢弃了工作区的修改。
    
  2. 如果 add 到缓存区了,那就只有

    先把缓存区的 unstage git checkout -- <file name>                          
    // 然后在恢复修改 ```
    
  3. 最后,如果已经 commit 到版本库了,那就只有先版本回退了

6 删除管理

正常情况下,人工删除了一个文件

rm b.txt

然后,用 git status 查看一下,会有删除提示,后来又发现删除错了,继续吃药

git checkout -- b.txt

吃完药,好了,该回来的都回来了。
另一种情况,这个文件真的要删除的,

git rm b.txt
git commit -a -m " delete b.txt "

这样就真的在版本库中删除了这个文件。还要找回的话,就只能版本回退了。

这里需要注意的是,从来未被加到版本库的文件是无法恢复的,版本回退都不行。

7 远程仓库 GitHub

首先要有一个 GitHub 账号,然后本地安装好 ssh ,生成 ssh 公匙,

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

进到 .ssh 文件夹下,里面会有两个文件 id_rsa 和 id_rsa.pub ,拷贝公匙 id_rsa.pub 中的内容。
然后登录好 GitHub,打开 Settings - SSH and GPG Keys
在这里插入图片描述
进入后会看到在这里插入图片描述
点击 New SSH Keys,把公匙里面的文本拷贝进去就行了,如果有多台电脑,那么就可以添加多个公匙即可。
现在的情况是有一个本地的版本库,另外需要在GitHub中新建一个版本库,使两者同步,下面先要在 GitHub 上新建一个仓库,做为远程仓库
在这里插入图片描述
点击 New repository ,新建一个仓库,
在这里插入图片描述
里面填写上你的仓库名称,以及描述(可选项),这样就可以看到 GitHub 中多了一个仓库。现在把本地的仓库,同步到远程新建的仓库中,现在可以直接手动上传了,也可以clone下来,对其中的代码进行相关编辑后,
git add 编辑过的代码,然后git commit -m “xxxxxxxxxxxxxx”,然后

git push

使本地代码与远程仓库代码同步。

8 分支管理

项目开发过程中,master一般都是很重要的代码,不可能所有的开发都是在master分支上进行开发的,都是在其他分支上开发完毕后,一般是dev分支,下面举例子说明一下,
首先,新建 dev 分支

git checkout -b dev

或者,通过以下两条指令

git branch dev
git checkout dev

此时,查看分支状态

git branch

在这里插入图片描述
现在切换到 dev 分支下了,对需要开发的代码进行相关操作,然后记得 git add 和 commit 之后,切换回 master 分支,

git checkout master

合并分支

git merge dev

在这里插入图片描述
合并完成后,就可以看到master上有在dev分支上做好的相关改动了,
删除 dev 分支

git branch -d dev

此时再看,就只有master分支了。
最后,附上廖雪峰老师的网站,多多向大神学习!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值