git学习简记

简介

GIT使用学习简记,具体内容参考 廖雪峰Git教程易百Git教程。如需详细了解,请参考官方文档:git

创建版本库

1、进入/创建目标目录

mkdir <目录名>
cd <目录名>
pwd

第一步为非必须操作,git的版本库创建只需要进入目标目录即可,只有在目标目录下才可以创建。

2、初始化一个仓库

git init

3、提交文件

git add <目标文件全名,包括后缀>

将目标文件放入暂存区stage/index ,在这里add可以同时添加多个文件,用空格隔开即可。
例如:git add xxx.txt 14124.txt sdsaf.txt

git commit -m "<备注>"

将暂存区所有文件提交至分支(默认为master)

完成以上两步即可上传至仓库中
因为git commint命令会一次性将所有暂存区文件提交,所以可以多次使用add命令。

版本管理

1、查看仓库状态

git status

2、查看文件修改差异

git diff <文件名> 

git diff <版本号1><版本号2><版本号3> 

git diff <分支1> <分支2>

比较当前文件和暂存区文件差异。
比较两次提交之间的差异。
比较两个分支的差异。

3、查看提交历史

git log 
git log --pretty=oneline

历史版本中的commit id就是版本ID,在需要使用版本ID的时候只需要输入版本号前几位即可,Git会自动查找匹配。

4、查看命令历史

git reflog

5、版本回退

git reset --hard commit_id

HEAD 是指针,它会指向当前分支的当前版本;版本的切换实际上也就是改动HEAD所指向的分支,分支指向的版本。
commint_id就是版本号。
通过查看提交历史可以查看过去提交的版本号。
通过查看命令历史可以查看未来的版本号(当你已经回退到某一个版本,才会使用这个查看之前提交的最新版本号,因为回退会导致其版本后提交的版本号无法查询到,这个时候命令历史就会起作用了)。

6、撤销修改

git restore <文件名>

以下两种场景可以使用该命令:
1、文件修改后未提交至暂存区
2、文件修改后提交到了暂存区,然后又再次进行修改
以上两种场景使用后的结果为:
1、恢复至修改前
2、恢复至提交至暂存区时的修改(注:此时再使用一次该命令也没办法撤销了,因为文件以及被放入了暂存区,这就需要使用另一个命令)

git restore --staged <文件名>

此为提交至暂存区后使用的撤销指令,首先通过这个指令撤销提交至暂存区的操作。然后再次使用第一个指令,撤销文件修改操作,即可实现撤销修改。

7、删除文件

rm <文件名>

因为删除实际上也是属于修改的一种,故此可以通过撤销指令放弃删除。
在使用了删除后只需要commit一下就可以切实的删除了。
使用撤销指令放弃删除时需要注意,它只会恢复至你提交到版本库的最新版本(或者是恢复到暂存区中未提交的最后一个版本),所以可能会让你未提交的修改丢失。
如果我说的不是很清楚,建议自己操作尝试一下吧。

远程仓库管理

1、远程仓库

创建SSH Key。

1、在用户主目录下查看是否存在 .ssh 目录。

2、如果有,再看看这个目录下有没有 id_rsa (私钥)和 id_rsa.pub (公钥)这两个文件。

3、如果已经有了就可以通过GitHub或者自己的服务器使用,不管用哪个都还需要后续的设置,设置中就会使用到公钥,所以在此不做记录。

4、如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key

ssh-keygen -t rsa -C "邮箱"

输入邮箱后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。

2、添加远程仓库

git remote add origin git@server-name:path/repo-name.git;

要关联一个远程库,使用命令。

git push -u origin master

关联后,使用命令,第一次推送master分支的所有内容。
加上-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来。

git push origin master

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

3、SSH警告

当你第一次使用Git的clone或者push命令连接GitHub时,会得到一个警告:

The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?

这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。

Git会输出一个警告,告诉你已经把GitHub的Key添加到本机的一个信任列表里了:

Warning: Permanently added 'github.com' (RSA) to the list of known hosts.

这个警告只会出现一次,后面的操作就不会有任何警告了。

如果你实在担心有人冒充GitHub服务器,输入yes前可以对照GitHub的RSA Key的指纹信息是否与SSH连接给出的一致。

4、远程仓库克隆

git clone <url>

url填入地址即可。

5、多人协作

查看远程仓库信息

git remote

查看远程仓库详细信息

git remote -v

推送分支

git push origin <分支名>

抓取分支(推送分支失败时使用,时候后再重新提交,如果出现冲突先解决冲突)

git pull

在本地创建和远程分支对应的分支

git checkout -b <分支名> origin/<分支名>

建立本地分支和远程分支的关联

git branch --set-upstream <分支名> origin/<分支名>

分支管理

1、创建/合并分支

创建并切换至该分支(输入需要创建的分支名)

git checkout -b <分支名>
或者
git switch -c <分支名>

创建分支,如果不添加分支名为查看已有分支(输入需要创建的分支名)

git branch <分支名>

切换分支(输入需要切换的分支名)

git checkout <分支名>
或者
git switch <分支名>

合并分支(输入需要合并的分支名)

git merge <分支名>

删除分支(输入需要删除的分支名)

git branch -d <分支名>

如果要丢弃没被合并的分支,可以使用强制删除

git branch -D <分支名>

2、分支冲突

如果在合并分支时出现冲突警告,可以先使用status命令,查看是什么文件发生了冲突。

git status

在发现冲突文件以后可以通过cat命令直接进入内部查看冲突的内容。

cat <文件名>

在修改文件,解决了冲突以后需要再次进行,add和commit操作。
合并完成以后可以通过命令查看分之合并图。

git log --graph
或者
git log --graph --pretty=oneline --abbrev-commit

在完成这些以后,如果需要删除分支,也可以使用命令。

git branch -d <分支名>

3、分支管理策略*

合并分支时,加上–no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并。

git merge --no-ff -m "备注" <分支名>

而fast forward合并就看不出来曾经做过合并。

git merge <分支名>

4、bug分支

当我们需要修复bug的时候,我们可以通过创建一个bug分支,在分支上对其修复以后再进行合并。而如果此时你有个紧急bug需要你修复,而正好此时在编辑内容,我们可以通过stash命令对工作现场进行保存。

git stash

当修复完成,并且合并完分支以后,你想回到刚才正在编辑内容的分支,此时只需要使用git stash list,这样就可以查看所有在分支上刚才暂时保存的内容。

git stash list

而恢复命令有两种方式:一种是恢复到保存的编辑状态,不删除保存列表中的记录;一种是恢复到保存的编辑状态,并且删除掉保存列表中的记录。

git stash apply
恢复所保存的编辑状态

git stash drop
删除保存列表记录

git stash pop
恢复所保存的编辑状态,并删除保存列表中的记录

git stash apply stash@{ID}
通过这个命令可以对保存列表记录中某一条记录进行恢复

面对我们在基线上已经修复的bug,需要将其同步到我们目前没有修复bug的分支上,可以使用cherry-pick命令,将其提交的记录复制到分支上。在ID中只要填入commit的id即可。

git cherry-pick <id>

标签管理

创建标签(默认为HEAD)

git tag <标签名>

给指定commit创建标签

git tag <标签名> <commit id>

创建带有说明的标签

git tag -a <标签名> -m "说明" <commit id>

-a用于指定标签名 
-m指定说明文字

查看所有标签

git tag

显示标签信息

git show <标签名>

删除标签

git tag -d <标签名>

推送标签(创建的标签通常会存储于本地,不会自动推送)

git push origin <标签名>

推送所有标签

git push origin --tags

删除远程标签(需要先删除本地,才能再删除远程)

git tag -d <标签名>

git push origin :refs/tags/<标签名>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值