参考:廖雪峰的git教程
git init
把这个目录变成Git可以管理的仓库git add
把文件添加到仓库(实际上就是把文件修改添加到暂存区)
git add readme.txt 添加单个文件
git add ./ 添加全部缓存文件git commit -m "XXXXX"
把文件提交到仓库,"XXXX"是本次提交的说明(际上就是把暂存区的所有内容提交到当前分支)-
git status
查看仓库当前的状态
-
git diff <file>
查看readme.txt文件具体修改了什么内容
git log
显示从最近到最远的提交日志
git log --pretty=oneline 减少输出信息
git log --graph 可以看到分支合并图git reset
版本回退或把暂存区的修改回退到工作区
在Git中,用HEAD表示当前版本,也就是最新的提交,上一个版本就是HEAD^,上上一个版本就是HEAD^^,往上100个版本写成HEAD~100。
回退到上一个版本 git reset --hard HEAD^
想要回退到某个版本号 git reset --hard 1094a(1094a为你想要回退的那个版本的commit id,版本号没必要写全,前几位就可以了,Git会自动去找)
git reset HEAD <file> 可以把暂存区的修改撤销掉,重新放回工作区。-
git reflog
记录每一次命令
-
git checkout -- <file>
丢弃工作区的修改
git rm <file>
删除一个文件
先手动删除文件或者用rm命令删,然后使用git rm <file>和git add<file>(效果是一样的),并且git commit。
另一种情况是删错了,因为版本库里还有,所以可以通过$ git checkout -- test.txt,把误删的文件恢复到最新版本。
PS:从来没有被添加到版本库就被删除的文件,是无法恢复的!git remote add origin <address>
关联一个远程库git push
推送
git push origin master 推送master分支的所有内容
git push -u origin master 第一次推送(加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来)git remote -v
查看远程库信息
git remote -v 显示更详细的信息git remote rm <name>
删除远程库(根据名字删除)
比如:git remote rm origingit clone <address>
克隆一个本地库
分支模块
-
git branch
查看分支(当前分支前面会标一个*号) -
git branch <name>
创建分支 -
git checkout <name> 或者 git switch <name>
切换分支 -
git checkout -b <name> 或者 git switch -c <name>
创建+切换分支
git checkout -b dev origin/dev 创建远程origin的dev分支到本地 -
git merge <name>
合并某分支到当前分支
git merge --no-ff -m "XXXX" <name> 合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史能看到分支(因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去) -
git branch -d <name>
删除分支
git branch -D <name> 丢弃一个没有被合并过的分支,强行删除 -
git stash
把当前工作现场“储藏”起来(当手头工作还没有完成时)
git stash list 查看
恢复方法:1. git stash apply恢复,但是恢复后,stash内容并不删除,需要用git stash drop来删除
2. git stash pop,恢复的同时把stash内容也删了
git stash apply stash@{0} 恢复指定的stash -
git cherry-pick <commit>
把bug提交的修改“复制”到当前分支(即在master分支上修复的bug,想要合并到当前dev分支)
-
git pull
从远程抓取分支
如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>
标签模块
tag就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起。
-
git tag
查看所有标签 -
git tag <name>
打一个新标签
git tag <name> <commit> 给历史提交打上标签
PS:标签不是按时间顺序列出,而是按字母排序的
git tag -a <name> -m "XXXX" <commit> 创建带有说明的标签,用-a指定标签名,-m指定说明文字
PS:标签总是和某个commit挂钩。如果这个commit既出现在master分支,又出现在dev分支,那么在这两个分支上都可以看到这个标签 -
git show <tagname>
查看标签信息 -
git tag -d <tagname>
删除本地标签
git push origin :refs/tags/<tagname> 从远程删除标签 -
git push origin <tagname>
推送某个标签到远程
git push origin --tags 一次性推送全部尚未推送到远程的本地标签
其他配置
-
git config --global color.ui true
让Git显示颜色 -
git add -f <file>
强制将忽略文件添加到Git -
git check-ignore -v <file>
检查.gitignore的配置 -
git config --global alias.st status
配置别名(git status -> git st)
-global参数是全局参数,也就是这些命令在这台电脑的所有Git仓库下都有用。