GIT-BASH常见操作

简介: 使用git的命令行工具实现分布式版本管理操作

一、获取 Git 仓库

获取git仓库有两种方式,第一种,自己本地新建仓库,第二种克隆别人仓库。

1.本机创建仓库

   (1)在某个空文件下右键选择"Git Bash Here"

   (2)输入"git init"实现仓库创建

2.拉取远程仓库

   (1)空文件夹下 git clone https://gitee.com/tab343/api-gateway.git   mygit   (mygit自定义本地仓库名称)

二、查看文件状态

查看文件状态之前必须了解git中文件有哪些状态->

2.1使用git status命令可查看git中文件状态

image.png

上图中文件状态以及所在区域依次为

Changes to be committed: 表示文件等待提交

    3.txt(绿色)已追踪,但还未提交到暂存区域。(使用命令:git add 3.txt)

Changes not staged for commit: 表示文件有变更且未提交到暂存区域。

   1.txt/3.txt  已追踪,且已修改,但未提交到暂存区域

   *:这里的文件一定是已追踪的,但是不能判断该文件是否提交过。如上图,1.txt文件我有过提交到暂存区域的操作,而3.txt从未提交到暂存区域

Untracked files: 未追踪的文件

   4.txt 未追踪

  *:此时如果直接删除4.txt文件,git不会做任何记录。

2.2-s 参数状态简览

  git status -s 参数展示文件简洁信息

image.png

状态码解释

左状态码

右状态码

含义

两个问号表示,文件未添加到git仓库(还未追踪)。

A


A表示git仓库新增文件(即已追踪)

M表示已修改

M


文件被修改且提交到暂存区域(修改文件后,使用git add添加到暂存区)


M

表示已经添加到过暂存区域,且文件被修改但未提交到暂存区域

三、忽略文件

在.git目录下新建.gitignore文件。

需要注意的是忽略规则.

  • 所有空行或者以 开头的行都会被 Git 忽略。
  • 可以使用标准的 glob 模式匹配。
  • 匹配模式可以以(/)开头防止递归。
  • 匹配模式可以以(/)结尾指定目录。
  • 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。

忽略模版:A collection of .gitignore templates

以下为用idea创建新目录时候生成的.gitignore文件。

HELP.md

target/

!.mvn/wrapper/maven-wrapper.jar

!**/src/main/**

!**/src/test/**


### IntelliJ IDEA ###

.idea

*.iws

*.iml

*.ipr

.......................略.......................

四、查看已暂存和未暂存的修改

4.1使用git diff 比较工作目录中当前文件暂存区域快照之间的差异, 也就是修改之后还没有暂存起来的变化内容

image.png

4.2使用git diff --cached/staged 查看已暂存的将要添加到下次提交里的内容

五、提交更新

5.1使用git commit -m '提交说明' 命令,将暂存区域文件提交仓库。已修改但未暂存的文件不会提交。

5.2 -a 参数,表明将追踪过的文件提交仓库

六、移除文件

6.1 使用git rm -f 4.txt 从版本控制中删除,下次提交则不会纳入版本管理。-f为强制删除。

image.png

6.2使用git rm --cached 4.txt 从暂存区域中删除,但保留工作空间文件。

image.png

6.3使用git mv 4.txt 44.txt

image.png

7.查看提交历史

7.1使用git log查看提交日志

image.png

8.撤销

8.1撤销前一个操作后,添加一些操作后提交,git commit --amend

8.2取消暂存 git reset 7.txt

image.png

8.3撤销对文件的修改 git checkout -- 7.txt

上面操作实际上是检出最开始的7.txt文件然后覆盖工作空间的7.txt

9.git远程仓库使用

9.1查看远程仓库 git remote -v

image.png

9.2为本地仓库添加远程仓库路径 git remote add pb https://github.com/paulboone/ticgit

其中pb为该仓库的简称,默认名称为orgin

9.3从远程仓库抓取与拉取

使用git fetch [remote-name]实现远程仓库的拉取,但是此操作不会合并或修改你当前的工作,需手动合并。

使用git pull [remote-name]可实现自动合并到当前分支

使用git clone [remote-name]默认实现master分支与远程master分支合并

9.4推送到远程分支

使用git push [remote-name] [branch-name] 实现推送到远程仓库的某个分支

9.5查看远程分支

git remote show origin

9.6远程仓库重命名

git remote rename pb paul

9.7远程仓库删除

git remote rm paul

10git打标签

有利于交流

发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。

Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(跟分支很像对不对?但是分支可以移动,标签不能移动),所以,创建和删除标签都是瞬间完成的。

Git有commit,为什么还要引入tag?

“请把上周一的那个版本打包发布,commit号是6a5819e...”

“一串乱七八糟的数字不好找!”

如果换一个办法:

“请把上周一的那个版本打包发布,版本号是v1.2”

“好的,按照tag v1.2查找commit就行!”

所以,tag就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起

11git别名

简化操作 git config --global alias.co checkout

12git分支

参考:Git-分支-分支简介

12.1创建分支

git branch testing

12.2切换分支

git checkout testing

注意:切换分支会改变工作空间目录结构

12.3项目分叉历史

当我们在两个分支上都进行提交操作后,就会出现项目分叉。

git log --oneline --decorate --graph --all

image.png

12.4Git分支合并

参考:Git分支合并

情景案例

让我们来看一个简单的分支新建与分支合并的例子,实际工作中你可能会用到类似的工作流。 你将经历如下步骤:

  1. 开发某个网站。
  2. 为实现某个新的需求,创建一个分支。
  3. 在这个分支上开展工作。

正在此时,你突然接到一个电话说有个很严重的问题需要紧急修补。 你将按照如下方式来处理:

  1. 切换到你的线上分支(production branch)。
  2. 为这个紧急任务新建一个分支,并在其中修复它。
  3. 在测试通过之后,切换回线上分支,然后合并这个修补分支,最后将改动推送到线上分支。
  4. 切换回你最初工作的分支上,继续工作。

(1)创建一个新需求分支: git checkout -b iss53 = git branch iss53 + git checkout iss53

需要解决bug

(2)切换到master分支,注意在你切换分支之前,保持好一个干净的状态,避免冲突。

git checkout master

git checkout -b hotfix      #新建一个修复问题分支,修复完成后git commit提交

(3)合并master分支与hotfix分支

git checkout master  #首先切回到master分支

git merge hotfix #合并分支

image.png

(4)删除hotfix分支,因为它与master分支指向同一个位置

    git branch -d hotfix

(5)继续开发新功能,完成后合并到master分支

   git merge iss53

(6)合并出现冲突

12.5GIT远程分支

参考:Git-分支-远程分支

git pull的用法

推送分支: git push (remote) (branch)

$git push origin master

跟踪分支: git checkout -b myBranchName [branch] [remotename]/[branch]

  等价于 git checkout --track origin/master

拉取分支: git pull origin branch = git fetch + git merge

删除分支: git push origin --delete serverfix

 

目录
相关文章
|
7月前
|
Shell 开发工具 git
【Github】git bash将本地工程上传至github
【Github】git bash将本地工程上传至github
|
Shell Linux 开发工具
设置IDEA的 Terminal 使用 git bash
设置IDEA的 Terminal 使用 git bash
630 0
设置IDEA的 Terminal 使用 git bash
|
Shell Linux 开发工具
三招教你轻松扩展 git bash 命令(上)(二)
GitBash 是 Windows 系统安装 Git 时默认集成的命令行工具,提供运行 Git 命令的集成环境.
三招教你轻松扩展 git bash 命令(上)(二)
|
Shell 开发工具 git
2021年了, 如何将 Git Bash 设置为 VSCode 的终端?
2021年了, 如何将 Git Bash 设置为 VSCode 的终端?
312 0
|
Shell 开发工具 git
【Github】git bash将本地工程上传至github
【Github】git bash将本地工程上传至github
|
关系型数据库 MySQL Shell
Git:Git Bash连接MySQL
Git:Git Bash连接MySQL
122 0
Git:Git Bash连接MySQL
|
Shell 开发工具 git
在 Git Bash 下设置命令行调用vscode
在Git Bash下使用命令指定一个程序打开文件的设置。今天在使用gitbash时,打开文件,每次都是终端和使用鼠标去打开文件两个状态间来回切换。感觉很不方便,要是能够用命令直接打开文件就好了。 下面设置Git Bash中使用vscode命令打开文件...
273 0
在 Git Bash 下设置命令行调用vscode
|
关系型数据库 MySQL Shell
Git:Git Bash连接MySQL
Git:Git Bash连接MySQL
75 0
Git:Git Bash连接MySQL
|
关系型数据库 MySQL Shell
Git:Git Bash连接MySQL
Git:Git Bash连接MySQL
233 0
Git:Git Bash连接MySQL
|
IDE Shell 开发工具
修改 Vscode 终端为 git bash
修改 Vscode 终端为 git bash
231 0
修改 Vscode 终端为 git bash