Git基本知识
win环境下请在git bash中运行git命令。
图形界面下的create,issue,fork,pull requests不再涉及。
git操作的动画演示。访问 http://onlywei.github.io/explain-git-with-d3/。
git工作区域
如上图,不做过多补充。
ssh登录与多账号
生成ssh
ssh-keygen -t rsa -C "注册 gitlab 账户的邮箱"
ssh-keygen -t rsa -C "注册 github 账户的邮箱"
git设置ssh
.pub文件可以用notepad++打开,把里面的内容复制出来黏贴到github设置中的ssh keys中。
本地编写Config
# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_id_rsa
创建本地仓库
git init
git config --global user.name "注册GitHub的用户名"
git config --global user.email "注册GitHub的邮箱"
ssh clone
git clone [email protected]:project/repo.git
git基本操作
git status
查快git工作区状态
git add 文件
将代码放入缓存区
注意: .gitignore文件
git add .
git log
查看提交日志信息
点击 pgUp 和 pgDn 来进行日志的上一页和下一页的切换。点击 q 退出 log 查询(Windows 系统下的操作)。
git log --oneline -数字
git log --stat
git log -p
git reset --hard 日志id
使文件与本地仓库一致。
主要是用于代码回退 git reset --hard
,仅对已经 commit 到本地的代码有效。
回退后悔药:git reflog
命令查看之前版本 id 信息。
reset --soft
不进行暂存区和工作区的覆盖,仅将本地仓库回退;reset --mixed
覆盖暂存区,不覆盖工作区;reset --hard
暂存区,工作区全部用指定提交版本的目录树替换掉。
git checkout -- 文件
使文件与暂存区代码文件一致。对未提交到缓存区的代码进行撤销。
git reset HEAD -- 文件
将放入暂存区的文件退回到工作区中。
git分支实用知识
git branch
查看当前分支,master为默认分支。
git branch 分支名称
创建分支
git checkout 分支名称
分支切换
git checkout -b 分支名称
创建并切换
git push origin 分支名称
提交分支下的内容到远程仓库。
git pull origin 分支名称
拉取远程仓库分支的内容。
git merge 分支名称
合并从分支到当前主分支
git rebase 分支名称
合并主分支到当前从分支
git merge 和 git rebase 的区别
git操作的动画演示。访问 http://onlywei.github.io/explain-git-with-d3/。
结合动画理解:
git merge
会生成新的 commit,而git rebase
不会生成新的 commit,会保留比较完整的提交历史。git merge
是按照时间顺序进行合并,而git rebase
是将 主分支顺序不变,插入到从分支的前端。
git merge 和 git rebase 的使用场景
git merge
一般用于新功能的开发和 bug 修复;git rebase
在主分支上进行开发,或者 Pull 的冲突解决;git merge
主要是在主分支上进行使用,而git rebase
是在从分支上进行使用。
git cherry-pick 日志id
获取某一个分支的单笔提交,并作为一个新的提交引入到你当前分支上。
git用户配置
git config
git config -l
该命令是查看 Git 配置信息的命令。
git config user.name "提交者的名称"
配置当前仓库下提交者的名称。
git config user.email "邮箱"
配置当前仓库下提交者的邮箱。
git config --global user.name "用户名"
配置全局提交者的名称。
git config --global user.email "邮箱"
配置全局提交者的邮箱。
需要注意的是,这里配置的邮箱一定是我们已经注册 GitHub 的邮箱,并且是有该项目仓库提交权限的帐号。