git 常用命令大全(附命令注释)

1 安装

git --version   查看git版本

2 初始化配置

git config --global user.name                      查看用户名
git config --global user.name "serena"             修改用户名
git config --global user.email                     查看邮箱
git config --global user.email serena@example.com  修改邮箱
git config --list                                  查看配置列表

3 初始化仓库

git init  初始化本地仓库

4 C(新增)

git status           查看工作目录和暂存区的状态
git add .            提交所有文件到暂存区      
git commit -m "msg"  将暂存区提交到仓库区

5 U(修改)

git status           查看工作目录和暂存区的状态
git add .            提交所有文件到暂存区  
git commit -m "msg"  将暂存区提交到仓库区

6 D(删除 & 重命名)

git rm [deletefilename]             删除文件     
git mv [oldfilename] [newfilename]  重命名文件 

7 R(查询)

git status         查看工作目录中文件的状态(已跟踪(已提交 已暂存 已修改) 未跟踪)
git diff           查看未暂存的修改
git diff --cache   查看未提交的暂存
git log --oneline  查看提交记录

8 分支

分支的本质其实就是一个提交对象
HEAD: 是一个指针它默认指向master分支,切换分支时其实就是让HEAD指向不同的分支。每次有新的提交时,HEAD都会带着当前指向的分支,一起往前移动。

git log --oneline --decorate --graph --all   查看整个项目的分支图  
git branch                                   查看分支列表
git branch -v                                查看分支指向的最新的提交
git branch [name]                            在当前提交对象上创建新的分支
git branch [name] [commithash]               在指定的提交对象上创建新的分支
git checkout [name]                          切换分支
git branch -d [name]                         删除空的分支,删除已经被合并的分支
git branch -D [name]                         强制删除分支 

8.1 git分支本质

分支本质是一个提交对象,所有的分支都会有机会被HEAD所引用(HEAD一个时刻只会指向一个分支),当我们有新的提交的时候,HEAD会携带当前持有的分支往前移动。

8.2 git分支命令

git branch [branchname]               创建分支 
git checkout [branchname]             切换分支
git checkout -b [branchname]          创建&切换分支
git branch [branchname] [commitHash]  版本穿梭(时光机)
git branch -d [branchname]            普通删除分支
git branch -D [branchname]            强制删除分支
git merge [branchname]                合并分支

快进合并 --> 不会产生冲突
典型合并 --> 有机会产生冲突
解决冲突 --> 打开冲突的文件 进行修改 add commit

git branch                 查看分支列表
git branch --merged        查看合并到当前分支的分支列表, 一旦出现在这个列表中就应该删除
git branch --no-merged     查看没有合并到当前分支的分支列表,一旦出现在这个列表中就应该观察一下是否需要合并

8.3 git分支的注意点

在切换的时候 一定要保证当前分支是干净的!!!
允许切换分支:

  1. 分支上所有的内容处于已提交状态
  2. (避免)分支上的内容是初始化创建 处于未跟踪状态
  3. (避免)分支上的内容是初始化创建 第一次处于已暂存状态

不允许切分支:

  1. 分支上所有的内容处于已修改状态,或第二次以后的已暂存状态

在分支上的工作做到一半时 如果有切换分支的需求, 我们应该将现有的工作存储起来

git stash          会将当前分支上的工作推到一个栈中
// 分支切换-->进行其他工作-->完成其他工作后-->切回原分支

git stash apply    将栈顶的工作内容还原,但不让任何内容出栈 
git stash drop     取出栈顶的工作内容后,就应该将其删除(出栈)
git stash pop  --> git stash apply +  git stash drop 
git stash list     查看存储

8.4 后悔药

git checkout -- [filename]  撤销工作目录某个文件的修改
git checkout -- .           撤销工作目录所有文件的修改

git reset HEAD [filename]   撤销暂存区某个文件的修改
git reset HEAD .            撤销暂存区某个文件的修改

git commit --amend          撤销提交,注释写错了,重新给用户一次机会改注释

8.5 reset三部曲

git reset --soft [commithash[    ---> 用[commithash]的内容重置HEAD内容    
git reset [--mixed] [commithash] ---> 用[commithash]的内容重置HEAD内容 重置暂存区
git reset --hard [commithash]    ---> 用[commithash]的内容重置HEAD内容 重置暂存区 重置工作目录

8.6 路径reset

所有的路径reset都要省略第一步!!!
第一步是重置HEAD内容,我们知道HEAD本质指向一个分支,分支的本质是一个提交对象 。
提交对象,指向一个树对象,树对象又很有可能指向多个git对象,一个git对象代表一个文件!!!
HEAD可以代表一系列文件的状态!!!

git reset [--mixed] [commithash] [filename]   用[commithash]中[filename]的内容重置暂存区

8.7 checkout深入理解

git checkout [brancname]git reset --hard [commithash]特别像

  1. 共同点:
    * 都需要重置 HEAD 暂存区 工作目录
  2. 区别:
    1. checkout对工作目录是安全的 reset --hard是强制覆盖
    2. checkoutHEAD时不会带着分支走而是切换分支
    3. reset --hard时是带着分支走

checkout + 路径

git checkout [commithash] [filename]   重置暂存区  重置工作目录
git checkout -- [filename]              重置工作目录  

9 git远程协作开发

9.1 三个必须懂得概念

  1. 本地分支
  2. 远程跟踪分支(remote/分支名)
  3. 远程分支

9.2 远程协作的基本流程

第一步: 项目经理创建一个空的远程仓库
第二步: 项目经理创建一个待推送的本地仓库
第三步: 为远程仓库配别名,配用户名、 邮箱
第四步: 在本地仓库中初始化代码,提交代码
第五步: 推送
第六步: 邀请成员
第七步: 成员克隆远程仓库
第八步: 成员做出修改
第九步: 成员推送自己的修改
第十步: 项目经理拉取成员的修改

9.3 做跟踪

克隆该仓库时,会自动为master做跟踪
本地没有分支:

 git checkout --track     远程跟踪分支(remote/分支名)

本地已经创建了分支:

 git branch -u            远程跟踪分支(remote/分支名)

9.4 推送

git push  将本地代码推送到远程仓库

9.5 拉取

git pull  从远程仓库拉取代码到本地

9.6 pull request

让第三方人员参与到项目中: fork

9.7 使用频率最高的五个命令

git status    查看提交状态
git add .     添加到暂存区
git commit    提交
git push      推送
git pull      拉取

10 提交本地代码到远程仓库

10.1 从命令行创建一个新的仓库

git init  初始化一个git仓库
git add .   将“修改”从当前工作区存放到暂存区
git commit -m "first commit"      将暂存区中存放的文件提交到git仓库
git remote add origin [url]   将本地代码库的当前分支与远程的代码库相关联
git push -u origin master   将本地代码库的当前分支推送到远程的代码库

【注意】:

  1. 执行完上面的git init后会在文件夹下出现一个隐藏项目.git文件夹
  2. 上面的add只是将文件增加到Git的暂存区,要想真正添加到Git仓库中用commit命令

10.2 从命令行推送已经创建的仓库

git remote add origin [url]   修改仓库地址
git push -u origin master     push到远端

11 其他常用命令

git remote -v         查看git仓库的远程代码库的地址
git log               查看提交日志
git remote rm origin  删除远程仓库
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值