git学习小游戏:
https://learngitbranching.js.org/?locale=zh_CN
答案:略,自行百度
git中文文档:
https://git-scm.com/book/zh/v2
常用命令参考文档:
https://liaoxuefeng.gitee.io/resource.liaoxuefeng.com/git/git-cheat-sheet.pdf
初次安装完成后的设置
git config --global user.name "Your Name" git config --global user.email "email@example.com"
创建目录learngit,进入目录,显示目录
mkdir learngit cd learngit pwd
初始化仓库,用 ls -ah 来查看初始化后默认隐藏的目录 .git
git init
基本概念:
工作区、暂存区、版本库
工作区(Working Directory):电脑中看到的目录
暂存区(stage): stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中
版本库(Repository):隐藏目录 .git,是 Git 的版本库,这个不属于工作区
把文件添加到仓库, 实际上就是把文件修改添加到暂存区
git add readme.txt
把文件提交到仓库,-m
后面输入的是本次提交的说明,实际上就是把暂存区的所有内容提交到当前分支
git commit -m "wrote a readme file"
检查仓库当前的状态
git status
显示暂存区和工作区的差异
git diff
查看历史记录,最近到最远的提交日志,简化显示: git log --pretty=oneline
git log git log --pretty=oneline
回退到上一个版本
git reset --hard HEAD^
查看文件内容
cat readme.txt
恢复以前版本,只需写前几位版本号即可,git的版本回退只是指针发生了变化
git reset --hard 1094a
查看历史的每一次命令
git reflog
查看工作区和版本库里面最新版本的区别
git diff HEAD -- readme.txt
把文件在工作区的修改全部撤销,两种情况:
1,readme.txt
自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态
2,readme.txt
已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态
git checkout -- readme.txt
把暂存区的修改撤销掉(unstage),重新放回工作区
git reset HEAD readme.txt
删除文件管理器中的文件
rm test.txt
从版本库中删除该文件
git rm test.txt
-----------------------------------------------------------------------------------------
远程仓库:
基本设置
创建SSH Key,在用户主目录下,查看有无.ssh目录,如果有,再看该目录下有没有id_rsa
和id_rsa.pub
这两个文件,如果已经有了,可直接跳到下一步。
在窗口中输入ll -d ~/.ssh
也可以查询到.ssh目录
的位置
如果没有,打开Git Bash,创建SSH Key:
ll -d ~/.ssh
ssh-keygen -t rsa -C "youremail@example.com"
本地仓库关联远程仓库
git remote add origin git@github.com:michaelliao/learngit.git
初次把本地库的所有内容推送到远程库上
git push -u origin master
初次推送成功后,下一次只要本地作了提交,可以直接用下面命令推送
git push origin master
查看远程库信息
git remote -v
删除远程库,解除了本地和远程的绑定关系,并非物理上删除了远程库
git remote rm origin
从远程库克隆
git clone git@github.com:michaelliao/gitskills.git
创建dev
分支,然后切换到dev
分支
git switch -c dev git checkout -b dev
git branch dev git checkout dev git switch maste
查看当前分支
git branch
把dev
分支的工作成果合并到master
分支上
git merge dev
删除dev
分支
git branch -d dev
看到分支合并图
git log --graph
git log --graph --pretty=oneline --abbrev-commit
合并分支时,加上--no-ff
参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并
git merge --no-ff -m "merge with no-ff" dev
“储藏”工作现场
git stash
查看‘储藏’的工作现场
git stash list
恢复工作现场,方式一:用git stash apply
恢复,恢复后,stash内容并不删除,需要用git stash drop
来删除
git stash apply git stash drop
恢复工作现场,方式二:恢复的同时把stash内容也删了
git stash pop
多次stash,恢复的时候,先用git stash list
查看,然后恢复指定的stash,用命令
git stash apply stash@{0}
复制一个特定的提交到当前分支
git cherry-pick 4c805e2
强行删除没有合并的分支
git branch -D <name>
拉取最新分支
git pull
指定本地dev
分支与远程origin/dev
分支的链接
git branch --set-upstream-to=origin/dev dev
切换到需要打标签的分支上,打新标签
git tag v1.0
查看所有标签
git tag
历史提交的commit id打标签
git log --pretty=oneline --abbrev-commit git tag v0.9 f52c633
标签不是按时间顺序列出,而是按字母排序的
可以用git show <tagname>
查看标签信息
git show v0.9
创建带有说明的标签,用-a指定标签名,-m指定说明文字
git tag -a v0.1 -m "version 0.1 released" 1094adb
注意:标签总是和某个commit挂钩。如果这个commit既出现在master分支,又出现在dev分支,那么在这两个分支上都可以看到这个标签。
删除标签
git tag -d v0.1
推送某个标签到远程
git push origin v1.0
删除远程已经推送的标签,先从本地删除,再远程删除。删除命令也是push
git tag -d v0.9 git push origin :refs/tags/v0.9
------------------
忽略文件,配置文件在线浏览:https://github.com/github/gitignore
忽略文件的原则是:
- 忽略操作系统自动生成的文件,比如缩略图等;
- 忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的
.class
文件; - 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。
用-f
强制添加到Git
git add -f App.class
检查某文件的忽略规则
git check-ignore -v App.class
把指定文件排除在.gitignore
规则外的写法就是!
+文件名,所以,只需把例外文件添加进去即可
# 不排除.gitignore和App.class: !.gitignore !App.class
通过https://gitignore.itranswarp.com在线生成.gitignore
文件
配置别名,以后st
就表示status
git config --global alias.st status
给命令git reset HEAD file
配置一个unstage
别名
git config --global alias.unstage 'reset HEAD'
配置一个git last
,让其显示最后一次提交信息
git config --global alias.last 'log -1'
每个仓库的Git配置文件都放在.git/config
文件中
cat .git/config
当前用户的Git配置文件放在用户主目录下的一个隐藏文件.gitconfig
中
cat .gitconfig
标签:文件,git,--,stash,dev,常用命令,分支 From: https://www.cnblogs.com/jiushao-ing/p/17465829.html