Git常见命令,你收藏了吗?

1、Git简介

  • Git是一款分布式代码版本管理工具,通过git能够更加高效地协同编程
  • 工作中经常会忘了某个命令该怎么写,所以找个时间来对常见命令做一个归纳总结

src

git非常重要的4个概念

  1. 工作区:本地电脑存储项目的文件夹
  2. 暂存区:在使用git管理项目文件的时候,其本地的项目文件会多出一个.git的文件夹,将这个.git文件夹称之为版本库。其中.git文件夹中包含了两个部分,一个是暂存区(Index或者Stage),顾名思义就是暂时存放文件的地方,通常使用add命令将工作区的文件添加到暂存区里
  3. 本地仓库:.git文件夹里还包括git自动创建的master分支,并且将HEAD指针指向master分支。使用commit命令可以将暂存区中的文件添加到本地仓库中;
  4. 远程仓库:项目代码在远程git服务器上,例如github、gitlab,通常使用clone命令将远程仓库拷贝到本地仓库中,开发后推送到远程仓库中

src

日常开发时代码实际上放置在工作区中,也就是本地的XXX.go这些文件,通过add等这些命令将代码提交给暂存区(Index/Stage),也就意味着代码全权交给了git进行管理,之后通过commit等命令将暂存区提交给本地仓库分支上,也就是意味打了一个版本。另外,团队协作过程中自然还涉及到与远程仓库的交互

Git命令基本可以分为几大类:

  1. 管理配置
  2. 工作区和暂存区
  3. 暂存区和本地仓库
  4. 本地仓库和远程仓库

2、配置命令

1. 设置配置

  1. 配置用户名
git config --global user.name "your name";
复制代码
  1. 配置用户邮箱
git config --global user.email "youremail@github.com";
复制代码

2. 查询配置

  1. 当前配置
git config --list;
复制代码
  1. 本地配置:
git config --local --list;
复制代码
  1. 全局配置
git config --global --list;
复制代码
  1. 系统配置
git config --system --list;
复制代码
  1. 查询配置来源
git config --global --list --show-origin
复制代码

3. 其它

  1. 配置解决冲突时使用哪种差异分析工具,比如要使用vimdiff
git config --global merge.tool vimdiff;
复制代码
  1. 配置git命令输出为彩色的
git config --global color.ui auto;
复制代码
  1. 配置git使用的文本编辑器
git config --global core.editor vi;
复制代码

3、工作区

1. 初始化仓库

git init
复制代码

2. 克隆远程仓库

gti clone <url>
复制代码

3. 提交到暂存区

1. 提交工作区所有文件到暂存区

git add .
复制代码

2. 提交工作区中指定文件到暂存区

git add <file1> <file2>
复制代码

3. 提交工作区中某个文件夹中所有文件到暂存区

git add [dir];
复制代码

4. 撤销修改

1. 丢弃暂存区修改(未发版)

git reset HEAD <file>...;
复制代码

2. 丢弃工作区修改(未提交)

git checkout --<file>
复制代码

5. 删除文件

1. 删除工作区文件、并且也从暂存区删除对应文件的记录

git rm <file1> <file2>;
复制代码

2. 从暂存区中删除文件,但是工作区依然还有该文件

git rm --cached <file>;
复制代码

6. 储藏(必须add到暂存区)

1. 保存当前工作进度,将工作区和暂存区恢复到修改之前。

git stash 
git stash save [message] //保存信息
复制代码

2. 查看工作进度列表

git stsah list
复制代码

3. 查看具体工作进度信息(相关文件)

git stash show stash@{num}
复制代码

4. 应用储藏,恢复工作进度到工作区

git stash apply stash@{num}

git stash pop stash@{num} //同时删除储藏
复制代码

5. 移除指定的储藏

git stash drop stash@{num}
复制代码

6. 清除全部工作进度

git stash clear
复制代码

7. 重命名文件

git mv [file-old] [file-new];
复制代码

8. 查看状态

git status
复制代码

9. 比较工作区当前文件和暂存区的文件的差异

git diff <file-name>;
复制代码

4、暂存区

1. commit 提交本地仓库

1. 提交所有更新文件(打版本)

git commit -m '消息'
复制代码

2. 修改上次提交信息

git commit --amend -m“新提交消息” 
复制代码

3. 漏提交

git add missed-file // missed-file 为遗漏提交文件
git commit --amend --no-edit  表示提交消息不会更改,在 git 上仅为一次提交
复制代码

2. 查看信息

1. 比较暂存区和上一版本的异常

git diff --cached
复制代码

2. 指定文件在暂存区和本地仓库的不同

git diff <file-name> --cached
复制代码

3. 查看提交记录

git log -p 
复制代码

3. 打标签

1. 列出所有标签

git tag
复制代码

2. 创建标签

git tag -a v1.0 -m 'message'
复制代码

3. 查看标签

git show v1.0
复制代码

4. 推送标签到远程仓库

git push origin v1.0
复制代码

5. 推送全部标签

git push origin --tags
复制代码

4. 分支管理

1. 创建分支

git branch <branch-name>
复制代码

2. 切换分支

git checkout <branch-name>
复制代码

3. 新建并切换到分支

git checkout -b <branch-name>
复制代码

4. 删除分支

git branch -d <branch-name>
复制代码

5. 将当前分支与指定分支进行合并

git merge <branch-name>
复制代码

6. 显示本地仓库的所有分支

git branch
git branch -a //本地+远端
git branch -r //远端
复制代码

7. 在远程分支基础上建本地分支

git checkout -b <branch-name> <remote-name>/<branch-name>
复制代码

8、删除远端分支

git push origin --delete dev
复制代码

9. 拉取分支

git pull
复制代码

10. 推送分支

git push -f origin master  强制推送
git push 推送
git push origin qdbank:qdbank//推送本地分支到远程分支
复制代码

11. 合并分支的某个文件

git checkout minProgram --patch 文件路径 //需要确认
git checkout minProgram 文件路径 //直接覆盖
复制代码

5. 版本回退

使用指定的commit的内容覆盖暂存区和工作区

回退上一版本:git reset --hard HEAD^  
回退指定版本:git reset --hard commit_id
复制代码

不回改变工作区,但是会用指定的commit覆盖暂存区,之前所有暂存的内容都变为未暂存的状态

git reset –mixed
复制代码

不会改变暂存区,仅仅将commit回退到了指定的提交

git reset –soft
复制代码

撤销某次操作,此次操作之前和之后的 commit 和 history 都会保留,并且把这次撤销作为一次最新的提交

git revert  HEAD
复制代码

2. 查找命令历史

git reflog
复制代码

5、本地仓库

  1. 查看远端库
git remote 
git remote -v //展示url
git remote show origin //远端库详细信息
复制代码
  1. 添加远程仓库
git remote add [remote-name] [url]
复制代码
  1. 从远程仓库中抓取本地仓库中没有的更新
git fetch [remote-name]
复制代码
  1. 移除远端库
git remote rm [remote-name]
复制代码

6、忽略文件

工作中总会有些文件不允许或者不希望纳入git版本管理,同时不出现在未跟踪文件列表,这个时候我们可以创建.gitignore 的文件,列出要忽略的文件模式

# 此为注释 – 将被 Git 忽略
# 忽略所有 .exe 结尾的文件
*.exe
# 但 a.exe 除外
!a.exe

# 忽略 aaa/ 目录下的所有文件
aaa/*
# 会忽略 bbb/notes.txt 但不包括 bbb/server/arch.txt
bbb/*.txt
# 忽略 doc/ 目录下所有扩展名为 txt 的文件
bbb/**/*.txt

复制代码

7、结尾

写的不好的地方给指正,与诸君共勉之

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享