GIT-BASH常见操作-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

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 查看已暂存的将要添加到下次提交里的内容

image

五、提交更新

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

   

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章
最新文章
相关文章