工作原理图

1 常用命令速查表

2 创建一个git仓库

2.1 初始化一个仓库

git init  <当前目录>    // 当前目录下初始化
git init <dir name>    // 指定目录初始化

2.2 克隆远程git仓库

3 常用命令

3.1 查看操作 

​​​​​​​git --help 查看帮助

3.1.1 查看分支及git地址

git branch	             // 查看本地所有分支
git branch -a	         // 查看所有的分支
git branch -r	         // 查看远程所有分支
git branch -v            // 查看分支以及提交hash值和commit信息
git reflog show --date=iso <branch name>  // 查看分支创建时间
git ls-files                                              # 列出git index包含的文件 
git show-branch                                           # 图示当前分支历史 
git show-branch --all                                     # 图示所有分支历史 
git whatchanged                                           # 显示提交历史对应的文件修改
git show master@{yesterday}                               # 显示master分支昨天的状态 


git remote -v	         // 查看git地址
git remote 	             // 查看当前的远程仓库
git remote show origin 查看remote地址,远程分支,还有本地分支与之相对应关系等信息(结合git branch -a使用)
git remote prune origin  // 删除远程仓库不存在的分支信息,本地仓库与远程仓库origin分支信息保持同步, (git branch -a使用)
参考:https://blog.csdn.net/wangqingpei557/article/details/53147086

3.1.2 查看仓库状态

git status	          查看相关文件的状态
git status -sb	      简洁的输出git status中的信息 (sb是 short branch)

3.1.3 查看提交信息

git log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short  获取git log里的树形详细信息 包括hasg 日期 提交信息 提交人等
git log --oneline     拉出所有提交信息 q是退出
git log -5            查看前5次的提交记录
git log --oneline -5  打印出的日志里面只有哈希值和修改的内容备注
git log 文件名         查看该文件的提交
git log --grep        想过滤看到的内容   过滤日志
git log -n            查看近期提交的n条信息内容
git log -p            查看详细提交记录
git reflog                                                # 显示所有提交,包括孤立节点 
git log --pretty=format:'%h %s' --graph                   # 图示提交日志 
git show HEAD@{5}     
git show HEAD         // 查看最后一次提交修改的详细信息
git show 哈希值        // 查看对应的内容
git show HEAD^        // 查看倒数第二次的提交修改详细信息
git show HEAD^^       // 查看前2次变更
git show HEAD~2       //  查看前2次变更,同上
git show tag(标签名) 都可以查看最近一次提交的详细信息
git show -s --pretty=raw 2be7fcb476 

3.1.4 对比工作区,暂存区,仓库的差异

git diff                     //查看变更,工作区与暂存区的差异比对
git diff --cached            //暂存区与提交版本的差异
git diff HEAD                //工作区与仓库中最后一次提交版本的差别
git diff 版本哈希值 版本哈希值  //查看这2个版本哈希之间的区别
或者git diff HEAD~数字 HEAD~数字
git tag tt HEAD~4           // 给倒数第5次提交打一个tag tag名字是tt
git diff tt                 //就是倒数第5个版本与第一个版本之间的差异
git diff --cached tt        //暂存区与倒数第5个版本之间的比对

3.1.5 逐行查看文件修改历史

git blame 文件名           // 查看该文件的修改历史
git blame -L 100,10 文件名 // 从100行开始,到110行 逐行查看文件的修改历史

3.2 添加操作

git add 文件名     //将某个文件存入暂存区
git add b c       //把b和c存入暂存区
git add .         //将所有文件提交到暂存区
git add -p 文件名  //一个文件分多次提交

 3.3 提交相关操作

git commit -m "提交的备注信息"  # 提交到仓库
git stash -u -k               # 提交部分文件内容到仓库例如本地有3个文件 a b c 只想提交a b到# 远程仓库git add a b,然后 git stash -u -k, 再然后git commit -m "备注信息" 
# 然后再push,push之后 git stash pop 把之前放入堆栈的c拿出来 继续下一波操作
# 若已经有若干文件放入仓库,再次提交可以不用git add和git commit -m "备注信息" 这2步, 直接用
git commit -am "备注信息"  # 将add和commit合为一步,内容放至仓库,也可用git commit -a -m "备注信息"
git commit --amend -m 'xxx'         # 合并上一次提交(用于反复修改)
git commit -m "some msg" -a         # 提交所有修改
git commit -m "some msg" readme.txt # 提交单个文件
git commit -C head -a --amend.      # 增补提交,不产生新的提交历史记录。

git commit中的备注信息尽量完善 养成良好提交习惯 例如 git commit -m "变更(范围):变更的内容

3.4 标签操作

git tag                          # 查看列出所有打过的标签名
git tag -d 标签名                 # 删除对应标签
git tag 标签名字                  # 在当前仓库打个标签
git tag foo -m "message"         # 在当前提交上,打标签foo 并给message信息注释
git tag 标签名 哈希值 -m "message" # 在某个哈希值上打标签并且写上标签的信息
git tag foo HEAD~4               # 在当前提交之前的第4个版本上 打标签foo
git push origin --tags           # 把所有打好的标签推送到远程仓库
git push origin 标签名            # 把指定标签推送到远程仓库
git stash                        # 把暂存区的内容 暂时放在其他中 使暂存区变空
git stash list                   # 查看stash了哪些存储
git stash pop                    # 将stash中的内容恢复到当前目录,将缓存堆栈中的对应stash删除
git stash apply                  # 将stash中的内容恢复到当前目录,不会将缓存堆栈中的对应stash删除
git stash clear                     # 删除所有缓存的stash
git pull --tags                     # 把远程仓库的标签也拉取下来
git push origin :refs/tags/远程标签名 # 删除远程仓库的标签

3.5 清除操作

git clean -n    # 列出打算清除的档案(首先会对工作区的内容进行提示)
git clean -f    # 真正的删除
git clean -x -f # 连.gitignore中忽略的档案也删除
git clean -ffdx   

3.6 删除放入暂存区文件的方法(已commit后)

git rm 文件名           # 将该文件从commit后撤回到add后
git reset HEAD^ --hard # 删除后 可以用git rm 文件名再回撤一步

3.7 删除操作

git rm xxx              # 删除index中的文件 
git rm -r *             # 递归删除
git remote rm           # 删除远程仓库
git rm file             # 移除文件(从暂存区和工作区中删除)
git rm --cached file    # 移除文件(只从暂存区中删除)
git rm -f file          # 强行移除修改后文件(从暂存区和工作区中删除)

3.8 修改文件名以及移动

git mv a b        # 把a文件名字改成b 并且直接放入git add后的暂存区
git mv b ./demos/ # 把b文件移动到demos文件夹下

3.9 回撤操作

git commit --amend -m "提交信息"  # 回撤上一次提交并与本次工作区一起提交

git reset HEAD~2 --hard         # 回撤2步
git reset --files               # 从仓库回撤到暂存区
git reset HEAD                  # 回撤暂存区内容到工作目录
git reset HEAD file             # 取消暂存,同上
git reset HEAD --soft           # 回撤提交到暂存区
git reset HEAD --hard           # 回撤提交 放弃变更 (慎用)

git reset --hard HEAD --        #
git reset --hard commitid       # 回撤到该次提交id的位置 回撤后本地暂存区可能有内容 本地仓库有要同步的内容,此时丢弃掉暂存区的内容并且强制将本地的内容推送至远程仓库,执行下面的命令 

撤销提交操作
git revert --no-commit head    # 反转最近一次提交
git reset head                 # 取消暂存
git reset head <filename>      # 取消暂存
git reset HEAD^                # 回撤仓库最后一次提交,回退到head之前的版本

撤销尚未提交的修改
git checkout head readme.txt todo.txt # 撤销2个文件的修改
git checkout head *.txt.              # 撤销所有txt文件的修改
git checkout head                     # 撤销所有文件

git push -u -f origin 分支名    # 这样就可以完全回撤到提交id的位置
git reset --soft commitid      # 回撤到该次提交id的位置 并将回撤内容保存在暂存区
git push -f -u origin 分支名 所有内容都回撤完了, 将回撤后的操作强制推送到远程分支
git push origin/分支名 --force  # 强制将本地回撤后的操作 强制推送到远程分支

3.10 变基操作,改写历史提交 把多次提交合并起来

git rebase -i HEAD~3 //变基之后的哈希值与之前的不同 证明变基是重新做的提交 把多次提交合并成了几次提交

3.11 暂存相关

git stash                     # 暂存当前修改,将所有至为HEAD状态 
git stash list                # 查看所有暂存 
git stash show -p stash@{0}   # 参考第一次暂存 
git stash apply stash@{0}     # 应用第一次暂存 
git grep "delete from"        # 文件中搜索文本“delete from” 
git diff --cached             # 查看尚未提交的更新
git diff --staged             # 同上
git stash push                # 将文件给push到一个临时空间中
git stash pop                 # 将文件从临时空间pop下来

4 分支操作

4.1 切换分支相关

git checkout 分支名              # 检出分支
git checkout -b 分支名           # 创建并切换分支
git checkout -b dev origin/dev  # 拉取远程分支到本地分支dev
git checkout commitId 文件名     # 还原这个文件到对应的commitId的版本
git checkout -q commitID        # 切换到某个commitID
git checkout --track hotfixes/BJVEP933  # 检出远程分支hotfixes/BJVEP933并创建本地跟踪分支

4.1 合并分支

git merge 分支名          # 把该分支的内容合并到现有分支上
git merge origin/master  # 合并远程master分支至当前分支 

4.3 修改删除分支

git branch -d 分支名            # 删除分支
git branch -D 分支名            # 强制删除 若没有其他分支合并就删除 d会提示 D不会
git branch -m 老分支名 新分支名   # 修改分支名
git branch -M 旧分支名 新分支名   # 修改分支名 M强制修改 若与其他分支有冲突也会创建(慎用)
git fetch                      # 更新remote索引,相当于是从远程获取最新版本到本地,不会自动merge
git fetch origin
git fetch origin dev           # 远程分支拉到本地

4.4 push分支

git push -u origin 分支名       # 将本地分支推送到origin主机, 同时指定origin为默认主机,后面就可以不加任何参数使用git push, 也可解决git建立远程分支关联时出现fatal... upstram的问题
git push origin --delete 分支名 # 将(git branch -D 分支名)删掉的分支同步到远程主机,将origin/分支名的该分支也删除掉
git push --tags                # 把所有tag推送到远程仓库 
git push origin test:test      # 提交本地test分支作为远程的test分支

其他参考:git使用教程_git 172.0.0.1 18079_代码写注释的博客-CSDN博客

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐