1.克隆项目到本地
git clone https://git.oschina.net/Tocy/SampleCode.git
2.配置用户名和邮箱
git config --global user.name "Tocy"
git config --global user.email zyvj@qq.com
3.查看git中的配置 比如用户名 邮箱
git config -l
用户的配置 与 C:\Users\admin\.gitconfig 文件一直 也会同步修改
4.查看分支
git branch 查看本地分支
git branch -v 查看远程分支
git branch -a 查看所有分支(远程和本地的)
5.查看git操作历史
git log
git log --oneline //只显示 commit id 和备注信息 比较清晰
6.新建分支
git branch 新分支名称 新建分支但不切换到新分支
git checkout -b 新分支名称 新建分支 且 切换到新分支
git checkout -b 新分支名称 origin/master 从master分支上 新建分支 且 切换到新分支
注意:这里只是本地创建分支,需要推送到远程仓库 git push origin 新分支名称
7.删除分支
git branch -b 分支名称
8.切换分支
git checkout master
9.拉取远端分支内容
git pull = git fetch + git merge FETCH_HEAD
git pull --rebase = git fetch + git rebase FETCH_HEAD
git fetch: 更新git remote 中所有的远程仓库所包含分支的最新commit-id, 将其记录到.git/FETCH_HEAD文件中
git pull : 首先,基于本地的FETCH_HEAD记录,比对本地的FETCH_HEAD记录与远程仓库的版本号,然后git fetch 获得当前指向的远程分支的后续版本的数据,然后再利用git merge将其与本地的当前分支合并。
引申:git pull 和git pull -rebase 区别
参考文档:git pull --rebase的作用是什么,它与git pull有什么区别?_令狐掌门的博客-CSDN博客_git pull rebase
用户李四在cid2 新拉出分支tmp开发
在master 上合并temp
git pull : 将tmp上的提交记录作为新的commit提交到cid6
git pull --rebase:没有产生新的节点,使用rebase的git路线(提交树)是一直向前的
10.基于前一次commit信息,继续提交
git commit --amend
之后会显示 注释内容,修改后 :wq 保存退出 :q 不保存退出
11.将几次commit合并为一次commit
参考文档:git合并多次commit成一个后push_yylの博客的博客-CSDN博客_git多次commit如何push
a> git rebase -i HEAD~3 例:要将后三次的commit合为一次commit
b> 将不显示的commit记录 pick修改为s ,切不可删除否则代码会丢失
b> 修改commit注释,:wq 保存退出编辑即可 :q 不保存退出
12.push之后想回退到某个git版本
git reset --hard 48e55873802c42a5e298c7484c96b49dfc9f32da
(只是回退本地的版本记录,远程仓库的记录不变)
git reset --hard HEAD~1 (本地回退到上一个记录)
git push -f -u origin master (将本地内容,强制推送到远程仓库。会覆盖远程仓库内容)
注意 :回退后,版本之后的记录不会有保留记录 慎用
13.查看git 被回退的记录,并恢复
git reflog //可以看到所有的提交操作记录 git log 只能看到被回退后 之前的记录
git reset --hard 提交的版本id
14.将未提交的内容保存在堆栈区
参考文档:git stash详解_淹不死的水的博客-CSDN博客_git stash
git stash save "暂时保存1"
git stash pop 将当前stash中的内容弹出, 并 删除记录
git stash apply 将当前stash中的内容弹出, 不会 删除记录
git stash list 查看当前stash中的内容
git stash clear 清空stash中的内容
注释:该命令可将修改的内容,迁移到其他分支上继续修改
15.合并另一个分支的部分代码
参考文档:git cherry-pick 教程 - 阮一峰的网络日志
git cherry-pick id //这里的id为另一个分支的提交版本id