git 学习
一、入门
1. 配置 姓名、邮箱
git config --global user.name "xueminchao" git config --global user.email "1649214962@qq.com"
2.#创建工作区
git init
3.生成ssh公钥
ssh-keygen -t rsa -C "xxxx@qq.com"
#然后将id_rsa.pub公钥内容复制到github
4.添加远程仓库
git remote add origin git@github.com:xmc2016/person.git
5.拉取远程master 分支git pull origin master
#假如在pull之前,有进行过 git add 则需执行下面这条命令
git pull --rebase origin master
# 如果本地文件有变更,如果想放弃本地的文件修改,可以使用
git reset --hard FETCH_HEAD,FETCH_HEAD表示上一次成功 git pull之后形成的commit点。然后git pull.
6.添加文件
git add . :他会监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区,包括文件内容修改(modified)以及新文件(new),但不包括被删除的文件。 git add -u :他仅监控已经被add的文件(即tracked file),他会将被修改的文件提交到暂存区。add -u 不会提交新文件(untracked file)。(git add --update的缩写) git add -A :是上面两个功能的合集(git add --all的缩写)
git add filename :只添加单个文
7.提交文件
git commit -m "caipiao first commit "
8. 推送至远程库
git push -u origin master #首次提交需要加 -u 参数
9.删除文件
git rm test.txt #git rm 和git add 其实是等效的,都是对暂存区的操作 git commit -m "rm test.txt"
二、分支创建与合并
查看git下所有分支,*表示当前分支
# 查看git下所有分支,*表示当前分支 git branch
# 创建分支 git branch dev # 切换分支 git checkout dev # 创建并切换分支,可替代上两条命令 git checkout -b dev # 提交分支 git push origin dev
#分支合并
git merge dev #将dev分支合并到当前分支
三、版本回退
#查看commit历史 git log --oneline # git本地版本回退
git revert commit_id #回退到指定版本,建议使用revert
git reset --hard commit_id #回退到指定版本# 远程回退(以master分支为例)
git push origin master --force #远程提交回退 # 查看命令历史 git reflog
# 查看最近10条所有分支的所有操作记录
git reflog show HEAD@{now} -10
三、git标签
# 13c67f7 指的是commit-id git tag v1.0 13c67f7 git push origin <tagname> #可以推送一个本地标签; git push origin --tags #可以推送全部未推送过的本地标签; git tag -d <tagname> #可以删除一个本地标签; git push origin :refs/tags/ #<tagname>可以删除一个远程标签
四、克隆
# 从远程仓库克隆 git clone git@github.com:jasondong-1/gitpractice.git #git clone 默认只会把远端的master克隆下来 #获取远端其他分支 git checkout -b dev origin/dev
五、git stash 隐藏,必须把修改的文件进行 git add 后 才可以 git stash
git stash
git stash pop
git stash list
具体参考 https://www.liaoxuefeng.com/wiki/896043488029600/900388704535136
参考 https://www.cnblogs.com/jason-dong/p/8848350.html
参考 https://www.jianshu.com/p/0720609fc355
参考 https://blog.csdn.net/liuxiaoheng1992/article/details/79108233
fatal: unable to auto-detect email address (got 'name@bogon.(none)')的解决方法
https://www.jianshu.com/p/2da702603db0
[git]warning: LF will be replaced by CRLF in 解决办法
git config --global core.autocrlf false
# 再执行git提交