git 使用指南
技.技术研究78 阅读约 9 分钟
git 使用指南
git log
git log --pretty=oneline
// git log 只可忘后看,不可以往前看,所有一但回退版本,前面的将看不到
git 当前版本是 HEAD,上一个版本是HEAD^,上上个版本是HEAD^^..., HEAD~100
git reset --hard HEAD^
git reset --hard [版本号] // 这种办法也可以,而且版本号不必要写全,前几位就可以了,git 会自动查找
找回 commit id:git reflog
工作区:git init的文件夹
版本库:.git 目录
暂存区:版本库中的 stage 目录
git diff HEAD -- readme.txt 查看工作去和版本库区别
不执行 git add 到暂存区,那就不会加入到 commit 中
git checkout -- [文件]
回到最近一次 git commit 或 git add(--很重要,不然就是切换版本了),会删除修改的内容,只是对工作区修改,不会影响暂存区
git reset HEAD [file] 把暂存区的修改撤销掉,重新放回工作区,不会删除修改的内容,只是放回工作区,会影响暂存区
git rm 用于删除一个文件
在用户主目录(~)下找 .ssh 目录,没有的话自己用下面方法生成
公钥:
cat ~/.ssh/id_rsa.pub
生成 SSH Key: ssh-keygen -t rsa -C "youremail@example.com"
id_rsa:私钥(不能泄露出去)
id_rsa.pub:公钥(github用)
github 支持多个key,可以多台电脑办公
git remote add origin git@github.com:michaelliao/learngit.git // 添加远程仓库
git push -u origin master // 由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
SSH警告
当你第一次使用Git的clone或者push命令连接GitHub时,会得到一个警告:
The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?
这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。
这个警告只会出现一次,后面的操作就不会有任何警告了。
git 支持多种协议,包括 http,ssh 但 ssh 协议速度最快
查看分支:git branch
创建分支:git branch
切换分支:git checkout
创建+切换分支:git checkout -b
合并某分支到当前分支:git merge
删除分支:git branch -d
查看分支合并情况
git log --graph --pretty=oneline --abbrev-commit
git 合并分支时,如果可能,git 会采用 Fast forward 模式,但这种模式,删除分支后,会丢失分支信息,如果强制禁用 Fast forward 模式, Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息,
强制使用 Fast forward:
git merge --no-ff -m "merge with no-ff" dev
git stash 保存工作区修改
git stash pop 恢复工作区,并删保存的工作区修改
git stash apply stash@{id} 恢复指定暂存,但不删除
git stash drop stash@{id} 删除指定暂存
git stash list 显示当前的暂存列表
git cherry-pick
git branch -d
git branch -D
git remote 显示远程仓库信息
git remote -v 显示更详细的远程仓库信息
注意点:
git push origin【这里是本地分支】
git clone 拉取仓库默认只能看到 master 分支
git checkou -b dev origin/dev
创建远程分支 dev 到 本地
设置本地分支 与 远程分支的链接
git branch --set-upstream-to=origin/dev dev
Branch 'dev' set up to track remote branch 'dev' from 'origin'.
git rebase 操作可以把本地未push的分叉提交历史整理成直线
rebase 的目的是使我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比
git tag
git tag -a
git tag 可以查看所有标签
git push origin
git push origin --tags 可以推送全部未推送过的本地标签
git tag -d
git push origin :refs/tags/
在github上,可以任意fork开源仓库
自己拥有fork后的仓库的读写权限
可以推送pull request给官方仓库来贡献代码
删除本地远程仓库链接
git remote rm origin
git 给远程库起的默认名称是origin
git config --global color.ui true 让 git 显示颜色
.gitignore 忽略文件清单(放在根目录下)
强制添加到暂存区:
git add -f
检查文件有没有被忽略
git check-ignore -v
仓库的 git 配置文件在 .git/config 文件中
当前用户git配置文件放在用户主目录的一个隐藏文件 .gitconfig 中
git 配置别名
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.br branch
git config --global alias.unstage 'reset HEAD'
git config --global alias.last 'log -1'
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
git log -p -1
展开显示每次提交的内容差异
git log --stat
仅显示简要的增改行数统计
放弃本次修改
git fetch
更新git remote 中所有的远程仓库所包含分支的最新commit-id,将其记录到.git/FETCH_HEAD文件中
FETCH_HEAD:是一个版本链接,记录在本地的一个文件中,指向着目前已经从远程仓库取下来的分支末端版本
相关文章
评论 (0)
还没有评论,来抢沙发
