你好,我是田哥
前两天,我知识星球里一位朋友咨询我Git怎么搞,那么多命令难道要全部记下来吗?
答案是:没有必要,作为多年使用Git的我,其实很多命令也没用过。
有的同学可能会说,IDEA上直接这里点commit、push之类的不就能把代码提交上去了吗?搞这么多命令有啥用?自己累不累呀?
我只想回一句:你太年轻了!
为了让你不再为Git命令多而烦恼,我特意写了这篇文章。
在阅读文章之前,先了解三个概念:
工作区 Index / Stage
:
暂存区 Repository
:
仓库区(或本地仓库) Remote
:远程仓库
本文重点是我们工作中常用的命令,只要搞定本文,工作就轻松多了。
话不多说,直接开始吧。
Git用户名
git config --global user.name "Your Name"
邮箱
git config --global user.email "email@example.com"
Git显示颜色
git config --global color.ui true
创建项目文件夹,进入到文件夹里,然后初始化Git。
mkdir project
cd project
git init
git commit
之前需先git add
,commit
只负责提交暂存区
的内容)git add README.md(文件名)
# git add -f README.md(-f为强制添加,可提交.gitignore中配置的文件)
git commit -m "提交备注"
git status
git diff README.md(文件名)
git log
git reset --hard HEAD~N
git log
或者git reflog
(记录每次一提交的信息)可以查看)git reset --hard e475afc93c209a690c39c13a46716e8fa000c366(版本号,这只是个例子,此值不必写全,只要能让git知道是哪个把那本就行,一般写5-6位即可)
git add
或git commit
之前的状态)git checkout -- README.md(文件名)
git commit
之前)git reset HEAD README.md(文件名)
git commit
,若误删可以使用git checkout -- 文件名
)git rm README.md(文件名)
git remote -v
git remote add origin git@github.com:username/xxxx.git
master
分支)git push -u origin master
git push origin 分支名
git clone https://github.com/username/xxxx.git
或
git clone git@github.com:username/xxxx.git
git clone -b 分支名 https://github.com/username/xxxx.git
git branch 分支名
老版本
git checkout 分支名
新版本
git switch 分支名
老版本
git checkout -b 分支名
新版本
git switch -c 分支名
git branch
*
号)git branch -a
git merge
默认为fast forward
模式fast forward
模式
git merge 其他分支名
禁用Fast forward
模式(--no-ff
) 推荐
git merge --no-ff -m "提交备注" 其他分支名
用git log --graph --pretty=oneline --abbrev-commit
命令可以看到分支合并图
git branch -d 分支名
强行删除分支
git branch -D 分支名
git stash
git stash list
git stash apply
若存在多个保存的工作空间(n为序号0开始)
git stash apply stash@{n}
git stash drop
若存在多个保存的工作空间(n为序号0开始)
git stash drop stash@{n}
git stash pop
若存在多个保存的工作空间(n为序号0开始)
git stash pop stash@{n}
git cherry-pick commit的编号
git pull
git branch --set-upstream-to 分支名 origin/分支名
git rebase
rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。
git tag v1.0 commit的id(不加则为之后的commit添加标签)
git tag -a v1.0 -m "提交备注" commit的id(不加则为之后的commit添加标签)
git tag
git show v1.0
git tag -d v0.1
git push origin :refs/tags/v1.0
git push origin v1.0
git push origin --tags
关联GitHub的远程库
git remote add github git@github.com:username/xxxx.git
关联Gitee的远程库
git remote add gitee git@gitee.com:username/xxxx.git
推送Github
git push github master
推送Gitee
git push gitee master
.gitignore
文件中哪条规则写错了git check-ignore -v 文件名
git status
=> git st
git config --global alias.st status
git reset HEAD file
=> git unstage
git config --global alias.unstage 'reset HEAD'
git log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
=> git lg
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
命令还真不少,也没事的哈,Git原本就是个工具,所以,会使用就好。
建议收藏哈,工作中遇到了,不用到处去找。
参考:segmentfault.com/a/1190000020912590
欢迎加入我的知识星球,进入星球就是进入一个学习的圈子。
星球主要内容:
免费修改简历
免费在线模拟面试
共享大量实战项目的源代码和相关文档
免费共享10T学习资料
免费获取精选面试题,自研《面试小抄-03版》
免费技术提问
免费咨询职业规划
免费使用在线刷题网站(www.woaijava.cc)
马上要双11了,在此我也给大家发20张优惠券,名额有限,先到先得。