参考学习于廖雪峰的git教程--https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
git config user.name 使用者name
git config user.email 使用者email
1. git init 初始化git仓库
2. git status 查看仓库当前的状态
3. git diff
.暂存区有文件的时候,查看工作区和暂存区的差别
.暂存区没有文件的时候,查看工作区和上次提交到版本库中的文件的差别
.git diff HEAD --readme.txt 查看版本库中readme.txt文件和工作区中的readme.txt文件的区别
HEAD指向版本库中的当前版本
4. git add 文件修改提交到暂存区
5. git commit 提交更改,即把暂存区的内容提交到当前分支(参数 -m 后面跟备注)
6. git log 查看历史提交记录,后面有很多参数可用,比如 --pretty=oneline(每个提交信息单行显示)
7. git reset --hard HEAD^ (回退到上一个版本,HEAD^^回退到上上个版本,HEAD~100回退到前100个版本)
git reset --hard 1e650aa (1e650aa是提交版本的哈希,回到哈希值为1e650aa的版本)
git reflog 记录每次操作的命令,可用获得各个版本的哈希值
8. git checkout --readme.txt 把工作区的修改全被撤销,即,让这个文件回到最近一次git commit 或者 git add 后 的状态
9. git reset HEAD readme.txt 把暂存区的修改全部撤销掉,重新放回工作区
10. 远程仓库
创建ssh key $ ssh-keygen -t ras -C "youremail@example.com",使用默认值就可以了
在用户目录中找到.ssh目录 id_rsa.pub是公钥
在github中的SSH key中 在文本框里粘贴id_rsa.pub的内容
本地仓库和github仓库关联,本地仓库运行 $ git remote add origin git@github.com:kevinJser/gitstudy.git (后面的为github上仓库的ssh地址)
11. git push origin master 提交推送 向远程仓库origin推送master分支
12. git clone ...... 克隆
13. git checkout -b dev 创建分支dev
相当于两步操作 git branch dev git checkout dev
14. git branch 查看当前分支
15. git merge dev 合并指定分支到当前分支 (Fast-forward,快进模式) 也就是直接把master指向dev的当前提交
16. git branch -d dev 删除dev分支
17. 合并冲突解决, 本地修改后 git add ... git commit ... 最后删除临时分支
18. 强制禁用Fast forward模式合并(Fast forward模式下,删除分支后,会丢掉分支信息)
禁用后,git会在merge时生成一个新的commit,这样就可以从分支历史上看到分支信息
19. bug分支,由于git中分支功能的强大,因此,每个bug都是可以通过一个新的临时分支来修复,修复后合并分支,然后删除临时分支
20. git stash 储存当前的工作,当工作未完成,需要切换到其他分支处理事务的时候,可以先把当前工作内容存储起来
git stash list 查看存贮的工作内容。
git stash apply stash@{0}(这个是 git stash list 中查看到的存储内容地址) 恢复工作内容,后面需要使用
git stash drop 来删除保存的工作内容
git stash pop 恢复的同时也把stash内容删除了
21. feature分支(实验性分支,比如添加新功能的时候写的一些实现新的代码),完成后合并删除
git branch -D feature 强制删除feature分支,没有合并过的分支无法普通删除,只能强制删除
22. git remote 查看远程仓库
git remote -v 详细信息
23. 当推送失败的时候,一般是因为和远程仓库有了冲突(比如,你的工作伙伴也修改了你推送的那个分支,并且已经推送到了远程仓库中)
这时候,需要先pull下来,然后在本地合并,解决冲突.
24. git pull 的时候需要指定本地分支和远程仓库分支的链接
git branch --set-upstream dev origin/dev,然后再git pull
然后就是手动解决冲突,然后再push
25. git tag v1.0 为当前分支打上标签
git tag 查看当前分支的标签
要为之前的commit打标签:
git log --pretty=oneline --abbreve-commit 查看各个commit的哈希号
git tag v0.9 commit号
git tag 展示出来的标签不是按照时间顺序列出,而是按照字母排序
git show v0.9 查看标签信息
git tag -a v0.1 -m "version 0.1 released" commit号
git tag -d v0.1 删除标签
git push origin
git push origin --tags 推送所有尚未推送到远程的本地标签
删除远程标签:
git tag -d v0.9 先本地删除
git push origin :refs/tags/v0.9 从远程删除
26. 忽略特殊文件
https://github.com/github/gitignore
忽略原则:
1. 忽略操作系统自动生成的文件,比如缩略图等。
2. 忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另外一个文件自动生成的,
那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件。
3. 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。
git add -f App.class 强制添加到GIT, 因为gitignore的原因可能一些文件被忽略,这样可以强制添加。
git check-ignore -v App.class 检查