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

原文地址:https://www.cnblogs.com/xmc2017/p/11307811.html