git常用操作


一、 Git配置

1.安装Git

$ sudo apt inatsll git

2.绑定git仓库

本地命令行生成密钥,替换成自己邮箱,然后一路回车。

$ ssh-keygen -t rsa -C "你的邮箱"
$ cat ~/.ssh/id_rsa.pub 

将生成的公钥打印出来复制,将这串文本复制粘贴到Gitlab的profile/keys中。

Add key

输入命令检查是否绑定成功,如果出现Welcome to GitLab, @xxx!!则绑定成功。

$ ssh -T git@gitlab.xxx.com

3.配置用户名和邮箱:

查看配置信息,一开始为空:

$ git config --list

全局配置,对所有代码库生效:

$ git config --global user.name "你的名字"
$ git config --global user.email "你的邮箱"

局部配置,只对当前的代码库有效:

$ git config --local user.name "你的名字"
$ git config --local user.email "你的邮箱"

配置后,远程仓库提交的commit里对应的用户即为 user.name

二、Git基本操作

1.创建版本库

创建版本库有两种方式,一种是将本地的文件夹直接变成一个git仓库,另一种是直接将远程的仓库克隆到本地。

$ git init # 将本地文件夹变为一个git仓库
$ git clone <url> # 将远程仓库克隆到本地

<url> 分为两种类型:
git@xxx.git
https:xxx.git
其中https的链接在后续操作中需要多次输入账户名,密码。

2.修改与提交操作

$ git add <file> # 将单个文件从工作区添加到暂存区
$ git add . # 将所有文件添加到暂存区
$ git commit -m "messenge" # 将暂存区文件提交到本地仓库
$ git status # 查看工作区状态,显示有变更的文件。
$ git diff # 比较文件的不同,即暂存区和工作区的差异。

3.远程操作

$ git push origin master # 将本地的master分支推送到远程对应的分支
$ git pull  # 下载远程代码并合并,相当于git fetch + git pull
$ git fetch   # 从远程获取代码库,但不进行合并操作

$ git remote add origin <url> # 将远程仓库与本地仓库关联起来
$ git remote -v # 查看远程库信息

4.合并最近两次commit

一次commit的时候,发现有段代码没写好,就补了一句以后再commit了一遍,这样就有两条commit语句了。应该把之后补的那条合并到前面去。
这时候就需要git rebase语句:

$ git rebase -i HEAD~2

当前我们只要知道 picksquash 这两个命令即可。

  • pick 的意思是要会执行这个 commit
  • squash 的意思是这个 commit 会被合并到前一个commit
    ()
    根据提示,把第二个“pick”改成“squash”,这样就可以把第二个commit合并到到第一个里,修改并保存后会自动进入下一个页面(这里忘记截图了),
    然后修改commit信息,保存即可,此时查看git log,commit已经改变了。

5.撤销与回退操作

①撤销操作:

当修改了工作区/暂存区的文件,但是还没有commit时,想要撤销之前的操作:

场景1:当你改乱了工作区某个文件的内容,但还没有add到暂存区
$ git checkout <file> # 撤销工作区的某个文件到和暂存区一样的状态
场景2:当乱改了工作区某个文件的内容,并且git add到了暂存区
$ git reset HEAD <file> # 第1步,将暂存区的文件修改撤销掉
$ git checkout <file> # 第2步,将工作区的文件修改撤销掉
场景3:乱改了很多文件,想回到最新一次提交时的状态
$ git reset --hard HEAD # 撤销工作区中所有未提交文件的修改内容

②回退操作:

当已经进行了commit操作,需要回退到之前的版本:

$ git reset --hard HEAD^ # 回退到上次提交的状态
$ git reset --hard HEAD~n # 回退到n个版本前的状态
$ git reset --hard HEAD commitid # 回退到某一个commitid的状态
$ git reset --soft HEAD commitid # 回退到某一个commitid的状态,并且保留暂存区的内容
$ git reset --mixed(默认) HEAD commitid # 回退到某一个commitid的状态,并且保留工作区的内容

③找回被误删的分支:

第一步,历史操作记录
$ git reflog show --date=iso
# git reflog用来记录你的每一次命令。
# --date=iso 表示以标准时间显示,这里要注意的是不能用git log。
# git log 命令显示从最近到最远的提交日志,当分支被删掉就找不到记录了。

从每一次的命令里,找到你想要恢复的那次commit,也就是你删除的分支的commit。

第二步,在历史操作记录中找到具体commitId
$ git  show  a02ba0262
# 查看commitId对应的提交详情,确认是否想要恢复
第三步,根据commitId恢复被删除的分支到本地
$ git checkout -b  <name>  commitId

三、Git分支管理

git的最强大之处就在于分支管理了,具体有两种应用场景:

1.多人协作:

每个人都基于主分支创建一个自己的分支,在分支上进行开发,然后再不断将写好的代码合并到主分支。

2.自己修复bug/增加feature:

创建一个bug分支或者feature分支,写好代码后合并到自己的分支然后删除bug/feature分支。

$ git branch <name> # 创建分支
$ git checkout <name> # 切换到某个分支
$ git checkout -b <name> # 创建并切换到新分支,相当于同时执行了以上两个命令
$ git merge <name> # 合并某个分支到当前分支中,默认fast forward
$ git branch -a # 查看所有分支
$ git branch -d <name> # 删除分支
$ git branch -D <name> # 强行删除分支

文章作者: Wyx
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Wyx !
  目录