Git常用命令

Git官方文档

Git常用命令

GitHub

GitLab Installation

本地库初始化
命令:git init
结果:生成.git目录(存放本地库相关文件,不要删除,也不要乱修改)

设置签名
user.name
user.email
作用:区分不同开发人员的身份
项目级别/仓库级别:仅在当前本地库范围内有效
命令:git config user.name org
命令:git config user.email org@org.com
结果:信息保存在.git/config下
系统用户级别(建议使用)
命令:git config --global user.name org
命令:git config --global user.email org@org.com
结果:信息保存在~/.gitconfig下
需设置其中之一,二者都有时采用项目级别的签名

基本操作

Workspace:工作区
Index / Stage:暂存区(一般存放在 ".git目录下" 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index))
Repository:仓库区(或本地仓库,目录.git)
Remote:远程仓库

状态查看(查看工作区、暂存区状态)
命令:git status

添加(将工作区的“新建/修改”添加到暂存区)
命令:git add .     (添加所有新建/修改)

提交 (将暂存区的内容提交到本地库)
命令:git commit -m "commit message"

忽略提交文件(IDEA环境文件)
项目目录下新建.gitignore文件
命令:vim .gitignore
插入以下规则

#忽略整个.idea目录
.idea
#忽略.iml结尾的文件
*.iml
#忽略整个target目录
target
如已有忽略文件被track(跟踪)了,即执行了git add操作,文件在暂存区中

执行如下命令
命令:git rm -r --cached .
命令:git add .
命令:git commit -m "update .gitignore file"
-r:删除文件夹及其子目录
--cached:删除暂存区里的文件而不删除工作区里的文件

查看历史版本记录
命令:git log
多屏显示控制方式:
空格:下页
b:上页
q:退出

其它
命令:git log --pretty=oneline
命令:git log --oneline(只显示过去)
命令:git reflog
HEAD@{移动到当前版本需要多少步}

版本前进后退
命令:git reset --hard [局部索引值]
例子:git reset --hard a6ace91
reset  命令的三个参数对比
--soft 参数
仅仅在本地库移动 HEAD 指针

--mixed 参数
在本地库移动 HEAD 指针
重置暂存区

--hard 参数
在本地库移动 HEAD 指针
重置暂存区
重置工作区

比较文件差异
命令:git diff [文件名]
将工作区中的文件和暂存区进行比较
命令:git diff [本地库中历史版本] [文件名]
将工作区中的文件和本地库历史记录比较
不带文件名比较多个文件

分支操作
创建分支
命令:git branch [分支名]
查看分支
命令:git branch -v
切换分支
命令:git checkout [分支名]
合并分支
第一步:切换到合并的分支上
命令:git checkout [合并的分支名]
第二步:执行 merge 命令
命令:git merge [被merge的分支名]
第三步:解决冲突
    第1步:编辑文件,删除冲突符号,修改冲突内容,保存退出
    第2步:git add [文件名]
    第3步:git commit -m "message"

再次理解

  • 图中 "HEAD" 指向 master 分支的一个"游标"。图示命令中出现 HEAD 的地方可用 master 来替换。
  • 图中的objects 为 Git 的对象库,位于 ".git/objects" 目录下,包含了创建的各种对象及内容。
  • 当对工作区修改(或新增)的文件执行 "git add" 命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。
  • 当执行提交操作(git commit)时,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。
  • 当执行 "git reset HEAD" 命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。
  • 当执行 "git rm --cached <file>" 命令时,会直接从暂存区删除文件,工作区则不做出改变。
  • 当执行 "git checkout ." 或者 "git checkout -- <file>" 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区的改动。
  • 当执行 "git checkout HEAD ." 或者 "git checkout HEAD <file>" 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。

查看远程库地址别名
命令:git remote -v
添加远程库地址别名
命令:git remote add [别名] [远程地址]

git代码托管服务器免密登录
创建SSH Key
命令:ssh-keygen -t rsa -C "xxx@foxmail.com"
获取公钥
windows位置:‪C:\Users\用户名\.ssh\id_rsa.pub
Linux位置:cat ~/.ssh/id_rsa.pub
复制到git代码托管服务器的SSH key中
验证key
添加为信任主机
ssh -T git@github.com

推送
命令:git push [别名] [分支名]

克隆
命令:git clone [远程地址]

拉取
pull=fetch+merge
命令:git fetch [远程库地址别名] [远程分支名]
命令:git merge [远程库地址别名/远程分支名]
命令:git pull [远程库地址别名] [远程分支名]

GitHub
是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名GitHub。

GitLab
是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值