git常见操作命令

1.Git 配置

在安装完成 Git 后,开始正式使用前,是需要有一些全局设置的,如用户名、邮箱。

git config --global user.name "your name"      // 设置全局用户名
git config --global user.email "your email"    // 设置邮箱

查看配置:git config -l

2.基础操作

2.1将文件添加到版本库

git init

查看目录结构中,就可以看到包含有 .git 子目录,这就说明创建版本库成功

相当于idea中的 vcs----create git repository

2.2将文件添加到版本库

2.2.1将文件添加到暂存区

git add 001.txt        // 添加单个文件到暂存区
git add .                // 将当前目录下所有修改添加到暂存区,除按照规则忽略的之外

相当于idea中的git --> add(ctrl+alt+a)

git常见操作命令_第1张图片

 不同之处是在idea中即便不进行add,依旧可以commit

git常见操作命令_第2张图片

2.2.2将暂存区中的文件提交到仓库中

git commit        // 如果暂存区有文件,则将其中的文件提交到仓库
git commit -m 'your comments'         // 带评论提交,用于说明提交内容、变更、作用等

这个和idea中的git -commit一致,不同点:注释必须写

2.2.3. 查看仓库的状态

git status

在idea中,直接在commit界面可以看到改动的所有文件以及未add的文件,双击后可以看到变化:

git常见操作命令_第3张图片

2.2.4 查看仓库中的具体修改

git diff    // 查看版本库中所有的改动
git diff 001.txt        // 查看具体文件的改动

 在idea中,和上图的commit类似,或者也可以通过右键标签--show diff with working tree查看

git常见操作命令_第4张图片

 2.2.5  查看提交历史记录

git log     // 显示所有提交的历史记录
git log --pretty=oneline    // 单行显示提交历史记录的内容

相当于idea中的右键项目 -- show history

git常见操作命令_第5张图片

在 git log 的输出内容中,可以看到每次提交的 ID,是一个 40 位的字符串。

git常见操作命令_第6张图片

在idea中,也可以找到对应的id:

git常见操作命令_第7张图片

 2.2.6. 版本回退

git reset --hard HEAD^        // 回退到上一个提交版本
git reset --hard HEAD^^        // 回退到上上一个提交版本
git reset --hard 'commit_id'    // 会退到 commit_id 指定的提交版本

等同于idea中:

git常见操作命令_第8张图片

git常见操作命令_第9张图片

2.2.7 回到未来的某个提交

git reflog
git reset --hard 'commit_id'

idea 中

命令行中通过reflog找到id

git常见操作命令_第10张图片

通过右键项目的reset head进行回退

git常见操作命令_第11张图片

2.2.8 撤销修改

你修改1个bug,修了一个小时变成了三个bug,这时候你需要对你的代码进行撤销修改操作:

git checkout -- 004.txt   // 如果 004.txt 文件在工作区,则丢弃其修改
git checkout -- .            // 丢弃当前目录下所有工作区中文件的修改

idea中:

git常见操作命令_第12张图片

 有一个需要注意的地方,撤销按钮隔壁有一个长得很像保存按钮的静态搁置按钮容易被误操作:

git常见操作命令_第13张图片

 点击之后修改的代码也会消失,这个功能主要是用于暂存你修改后的代码,并把你工作区的代码回滚到最后commit的记录,恢复的时候通过:

git常见操作命令_第14张图片

2.2.9,删除文件

在被 git 管理的目录中删除文件时,可以选择如下两种方式来记录删除动作:
一、rm + git commit -am "abc"
二、git rm + git commit -m "abc"
另外,git add . 仅能记录添加、改动的动作,删除的动作需靠 git rm 来完成。
最后,rm 删除的文件是处于 not staged 状态的,
也就是一种介于 “未改动” 和 “已提交过” 之间的状态。 

idea中直接删除文件后提交即可。

3.远程仓库

3.1 从远程克隆仓库

git clone https://gitee.com/rice666/git_demo2.git

idea中即创建项目的时候选择 from version controll

3.2. 添加远程仓库

git remote add origin https://gitee.com/rice666/git_demo3.git

3.3 查看远程仓库信息

git remote [-v] // 显示远程仓库信息

idea中:

git常见操作命令_第15张图片

git常见操作命令_第16张图片

3.4. 推送本地的内容到远程仓库

git push -u origin "master"

idea:

git常见操作命令_第17张图片

3.5修改本地仓库对应的远程仓库地址

git remote set-url origin url

4.分支管理

4.1 查看分支

git branch        // 查看本地分支信息
git branch -v     // 查看相对详细的本地分支信息
git branch -av     // 查看包括远程仓库在内的分支信息

注意:在 git branch 的输出内容中,有一个分支,前面带有 * 号,这标识我们当前所在的分支。

4.2 创建分支

分支创建后,新分支基于当前分支。

git branch dev // 新建 dev 分支

idea中

git常见操作命令_第18张图片

git常见操作命令_第19张图片

 4.3 切换分支

git checkout dev // 新建完 dev 分支以后,通过该命令切换到 dev 分支

idea:

git常见操作命令_第20张图片

4.4创建并切换分支 

git checkout -b dev // 新建 dev 分支,并切换到该分支上

4.5 合并分支

想把dev合并到master:先切换到master,在通过merge dev进行合并:

git checkout master        // 切换回 master 分支
git merge dev            // 将 dev 分钟中的修改合并回 master 分支

idea:先check out 到指定标签,在把需要合并的标签右键合并即可。

git常见操作命令_第21张图片

4.6. 删除分支

git branch -d dev // 删除 dev 分支

git常见操作命令_第22张图片

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

4.7.1 本地分支存在,远程分支存在,但之间没有关联关系。

 git push -u origin/remote_branch 命令推送。

4.7.2 本地分支存在,但远程分支不存在。

git push origin local_branch:remote_branch 

3 本地分支存在,远程分支存在,且关联关系已建立

使用 git push 命令进行推送。如果还没有建立关联,直接使用git push命令呢?

git常见操作命令_第23张图片

上面中的提示可以看到 ,使用 git push --set-upstream remote_branch 命令 创建本地分支和远程分支的关联关系

举例:

git常见操作命令_第24张图片

 idea的操作就简单多了,本地标签push时可以直接改名即可:

git常见操作命令_第25张图片

 3.6 从远程仓库拉取

通过 git fetch 和 git pull 来获取远程仓库的内容。

git fetch origin master    
git pull origin master

git fetch 和 git pull 之间的区别:

  • git fetch 是仅仅获取远程仓库的更新内容,并不会自动做合并。

需要先查看更新:

git log -p FETCH_HEAD

或者拉取到一个其他分支(目前还没见过分支创建)

如果没有问题,再进行合并:

git merge origin/master

新建一个本地分支,拉取远程到本地temp,查看不同,没问题则合并,合并后删除即可。

## 在本地新建一个temp分支,并将远程origin仓库的master分支代码下载到本地temp分支;
$ git fetch origin master:temp

## 比较本地代码与刚刚从远程下载下来的代码的区别;
$ git diff temp

## 合并temp分支到本地的master分支;
$ git merge temp

## 如果不想保留temp分支,删除;
$ git branch -d temp

git pull 在获取远程仓库的内容后,会自动做合并,可以看成 git fetch 之后 git merge

idea中就比较简单了:

先git-->fetch,随后更新后的远程仓库历史记录,查看不同即可。

git常见操作命令_第26张图片

git常见操作命令_第27张图片

merge和rebase的区别

merge,可以清楚地看到分支信息,缺点是基线很乱。

git常见操作命令_第28张图片

 

rebase,变基,对合并的分支记录进行清除,变基后成为一条漂亮的直线。

git常见操作命令_第29张图片

 

git常见操作命令_第30张图片

 

cherry-pick的使用

想要重新获取之前已经放弃的icon服务,选中记录后点击cherry-pick按钮进行合并(可能需要解决冲突),之后会对icon服务在主干上重新提交,被抛弃的代码也可以重新获得。

git常见操作命令_第31张图片

 

Undo Commit,Revert Commit,Drop Commit

是否删除对代码的修改 是否删除Commit记录 是否会新增Commit记录
Undo Commit 不会 未Push会,已Push不会 不会
Revert Commit 不会
Drop Commit 未Push会,已Push不会 不会

Undo Commit:撤销了Commit的动作。

如果已经进行了Push,线上的Commit记录还是会存在的

Revert Commit:撤销提交记录, 并对改动新生成了一次提交记录。

如果已经进行了Push,线上的Commit记录还是会存在的

Drop Commit:撤销提交,并删除未push的Commit记录

你可能感兴趣的:(git,github)