Git常用操作及命令

创建仓库

初始化一个Git仓库,使用git init命令。

添加文件到Git仓库,分两步:
第一步,使用命令git add <file>,注意,可反复多次使用,添加多个文件;或者git add . ,一次性添加所有改动;
(git add是把工作区中药提交的修改添加到暂存区(Stage))
Git管理的是修改,而不是文件
第二步,使用命令git commit -m "message",完成。(git commit是把暂存区的文件提交到仓库)

查看状态

要随时掌握工作区的状态,使用git status命令。
如果git status告诉你有文件被修改过,用git diff可以查看修改内容。
git diff HEAD -- <file>命令可以查看工作区和版本库里面最新版本的区别

版本回退

HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard <commit_id>
回退到是一个版本用git reset --hard HEAD^命令
穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

撤销修改

git checkout -- <file>git restore <file>:撤销工作区的修改(没有add)
git reset HEAD <file>git restore --staged <file>:撤销暂存区的修改(已add未commit :先撤销暂存区,再撤销工作区(命令如上))
提交了不合适的修改到版本库时,想要撤销本次提交,参考 版本回退

删除文件

1、工作区文件删除,未提交:
rm <file>
恢复:git restore <file>或者git checkout -- <file>
2、工作区文件删除,版本库文件删除,未提交:
rm <file>
git rm <file>(删除工作区+暂存区的文件)
恢复: git reset HEAD <file> (撤销对暂存区的修改) git checkout -- <file> (再撤销对工作区的修改)
3、工作区文件删除,版本库文件删除,已提交:
rm <file>
git rm <file>(删除工作区+暂存区的文件)
并且git commit -m <message>
恢复:git reset --hard <commit_id> 回退到指定版本号的版本(会失去删除之后做的另一些修改)
4.仅删除暂存区、不删除工作区
git rm --cached <file>
恢复: git reset HEAD <file> (撤销对暂存区的修改)
注意:从来没有被添加到版本库就被删除的文件,是无法恢复的!

远程仓库

首先,在Windows下查看[c盘->用户->自己的用户名->.ssh]下是否有id_rsaid_rsa.pub这两个文件,如果没有需要从第一步开始手动生成,有的话直接跳到第二步。
第1步:创建SSH Key
打开Git Bash,在控制台中输入以下命令:ssh-keygen -t rsa -C "youremail@example.com"
密钥类型可以用 -t 选项指定。如果没有指定则默认生成用于SSH-2的RSA密钥。这里使用的是rsa。
同时在密钥中有一个注释字段,用-C来指定所指定的注释,可以方便用户标识这个密钥,指出密钥的用途或其他有用的信息。所以在这里输入自己的邮箱或者其他都行,当然,如果不想要这些可以直接输入:ssh-keygen
输入完毕后按回车,程序会要求输入一个密码,输入完密码后按回车会要求再确认一次密码,如果不想要密码可以在要求输入密码的时候按两次回车,表示密码为空,并且确认密码为空,此时[c盘>用户>自己的用户名>.ssh]目录下已经生成好了。
第2步:将SSH添加到版本管理仓库
打开Gitee,打开设置->SSH公钥,把[c盘->用户->自己的用户名->.ssh]目录下生成好的公钥"id_rsa.pub"文件以文本打开复制放进 key输入框中,再为当前的key起一个title来区分每个key。

添加远程库
打开Gitee,先新建一个仓库,目前,这个仓库还是空的,我们可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到Gitee仓库。
现在,我们先在本地的目录仓库下运行命令:git remote add origin git@server-name:path/repo-name.git(关联一个远程库)
例如:git remote add origin git@gitee.com:zhou-shuangdi/git-testing.git
origin后面的地址可以在自己创建的远程仓库中点击克隆/下载查看
在这里插入图片描述
在这里插入图片描述
关联一个远程库时必须给远程库指定一个名字,origin是默认习惯命名;
关联后,使用命令git push -u origin master把本地库的所有内容推送到远程库上(把当前分支master推送到远程)
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改(注意,此处是master分支)

从远程库克隆
假设我们从零开发,那么最好的方式是先创建远程库,然后从远程库克隆。
先登录Gitee,创建一个新的仓库,远程仓库创建好之后,下一步是用命令git clone git@gitee.com:path/repo-name.git克隆一个本地库

分支管理

master分支是主分支,因此要时刻与远程同步;
dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;
bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;
feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。

创建与合并分支
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>或者git switch <name>
创建+切换分支:git checkout -b <name>或者git switch -c <name>
合并某分支到当前分支:git merge <name> (fast forward合并)
删除分支:git branch -d <name>

合并分支时,加上--no-ff参数,即git merge --no-ff -m "message" <name>就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

多人协作
查看远程库信息,使用git remote -v
本地新建的分支如果不推送到远程,对其他人就是不可见的;
在本地创建和远程分支对应的分支,使用git checkout -b <branch-name> origin/<branch-name>,本地和远程分支的名称最好一致;
git push origin <branch-name> 把该分支推送到远程库对应的远程分支上
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull抓取远程的新提交,试图合并,如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功
如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,使用git branch --set-upstream-to <branch-name> origin/<branch-name>

bug分支
修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;
当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场;
在master分支上修复的bug,想要合并到当前dev分支,可以用git cherry-pick <commit_id>命令,把bug提交的修改“复制”到当前分支,避免重复劳动。

rebase
git rebase操作可以把本地未push的分叉提交历史整理成直线;
rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值