git与github

来源:互联网 发布:淘宝助理怎么批量改价 编辑:程序博客网 时间:2024/06/03 11:17

最近研究了一下git和github。
网上找了些资料学习,做了点笔记,记录一波。
不足之处还请指出.

参考学习网址,强推廖雪峰老师的git教程:
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

另外,我的github: https://github.com/Sunyelw

希望共同学习,共同进步。

执行命令,没有任何显示,表示执行成功,Unix的哲学是“没有消息就是好消息”,说明执行成功。$ git user.name "Your name"$ git user.email "eamil address"# 创建版本库 Repository$ mkdir learngit$ cd learngit$ pwd$ git init$ git statusChanges ...         <filename1>        <filename2>        ...# 下面的文件表明被修改,注意:是修改之前就存在的文件.Untracked ...         <filename1>        <filename2>        ...# 下面的文件表明未提交,是之前从来没有存在的,属于新增.### ### ### ### ### ### ### ### ### ### ### ### ### PS:以上两者都需要用 add 命令提交[文件更改]到暂存区(stage/index),然后把这一步都做完了, 就可以把[修改]提交到分支了,用 commit -m 命令.### ### ### ### ### ### ### ### ### ### ### ### ### Change not staged for commit ...        <filename1>        <filename2>        ...no change added to commit<use "git commit -a" or "git add "># 这是表示你修改了 <filename>文件 但是没有执行 # add <filename> 命令,你需要执行此命令提交到暂存区.Changes to be committed ....        <filename1>        <filename2>        ...# 然后下面是一串文件名,表示你已经添加到暂存区的文件(执行了"git add <filename>"命令),等待提交到分支.# 一些命令$ git diff <filename> # 文件名数字好像不支持。$ git add . # 提交所有修改与新增到暂存区(stage/index)$ git add <filename> # 提交指定文件到暂存区$ git cat <filename> # 查看当前文件内容$ git commit -m "description" # 从暂存区提交到分支$ git push origin master # 提到到远程库# 提交: git push (-u) [库名称] [分支名]# diff的用法$ git diff HEAD -- a.txt # 比较工作区的当前版本与 版本库里面提交(commit)的最新版本间的区别,而不是与版本库里暂存区内的版本作比较。###git diff 是工作区和暂存区的对比git diff -- cached 是暂存区和分支的对比git diff HEAD -- readme.txt  工作区和分支的对比# 关联远程库$ git remote add origin git@github:Sunyelw/TestGit.git# 如果报错已存在 origin,那就换个名字,不用origin,比如ori也行# 删除已有的远程库。$ git remote rm origin $ git remote rm <repo-name> # 自定义的名称,一般是origin# 关联多个远程库$ git remote add github git@github.com:Sunyelw/TestGit.git  # 库名:github$ git remote add gitee  git@gitee.com:Sunyelw/TestGit.git   # 库名:gitee# 查看远程库$ git remote -v# 时光穿梭$ git log$ git reset --hard HEAD^$ git reset --hard HEAD^^  # HEAD^100$ git reset --hard fe194ab # 回 溯# 显示颜色。$ git config --global color.ui true# 配置别名$ 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.lg "log --color --graph --pretty=format:'%Cred%h%Creset -  %C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"注:--global参数是全局参数,也就是这些命令在这台电脑的所有Git仓库下都有用。# 删除别名$ git config --global unset alias.st配置文件一样有3层,系统级,用户级,项目级。加了--global选项的,表示配置写到了用户级,--system是系统级,win是在安装目录(如C:\Program Files\Git\mingw64\etc),不加就在项目级中。在命令行中,起同样的别名,前面的会被直接覆盖。如果别名是其本身的命令,比如git config --global alias.add commit,再运行git add时仍然是原add暂存功能,优先识别内置的命令,其次才别名。# 查看版本号$ git reflog $ git log --graph --pretty=format:'%h -%d %s (%cr)' --abbrev-commit --reflog# shift+ ; +q  # 退出。add: 工作区(即初始创建的仓库:文件夹TestGit)-->版本库(.git)中的暂存区stage(index)# .git文件夹隐藏在仓库内,但并不算工作区,而是版本库(repository)commit: stage  -->  master(当前分支,例如master)# 首次推送$ git push -u origin master # 问题:$ git push -u origin masterTo github.com:Sunyelw/TestGit.git ! [rejected]        master -> master (fetch first)error: failed to push some refs to 'git@github.com:Sunyelw/TestGit.git'hint: Updates were rejected because the remote contains work that you dohint: not have locally. This is usually caused by another repository pushinghint: to the same ref. You may want to first integrate the remote changeshint: (e.g., 'git pull ...') before pushing again.hint: See the 'Note about fast-forwards' in 'git push --help' for details. ### 第一步、执行 git pull$ git push -u origin master  # 首次成功后可这样写(去掉-u): $ git push origin masterTo github.com:Sunyelw/TestGit.git ! [rejected]        master -> master (non-fast-forward)error: failed to push some refs to 'git@github.com:Sunyelw/TestGit.git'hint: Updates were rejected because the tip of your current branch is behindhint: its remote counterpart. Integrate the remote changes (e.g.hint: 'git pull ...') before pushing again.hint: See the 'Note about fast-forwards' in 'git push --help' for details.# 第二步、执行 git fetch origin# 第三步、执行 git merge origin/master问题:$ git merge origin/masterfatal: refusing to merge unrelated histories# 第四步、执行 git pull origin master --allow-unrelated-histories# 可能出现:error: Merging is not possible because you have unmerged files.# 执行 把本地的冲突文件改名(?),解决。# 第五步、执行 git merge origin/master# 第六步、执行 git push origin master   成功上传!!!# 克隆。$ git clone git@github.com:Sunyelw/TestGit.git$ git clone [URL]//  HTTPS/SSH  协议。# ps:SSH 速度更快。# 分支 branch创建+切换 $ git checkout -b dev//" $ git branch dev" + "$ git checkout dev"创建 $ git branch dev切换 $ git checkout dev查看 $ git branch删除 $ git branch -d dev合并至当前分支: $ git merge dev//把dev分支的最新代码合并到master内。存储工作现场: $ git stash查看存储工作: $ git stash list恢复现场工作: ① $ git stash apply +$ git stash drop               ② $ git stash pop               ③ $ git stash apply stash@{0}bug修复:出现bug100,先stash工作现场,然后切换到想要修复bug100的分支,比如master,再度当前分支创建临时分支 issue-100,修复后合并 删除临时分支 issue-100.标签:# 创建$ git tag <tagname>$ git tag -a v1.0       -m "description"  <commit number>$ git tag -s <tag name> -m "description" <commit number># 上传$ git push t```````g <tag name>   #单个$ git push origin --tags    #所有# 删除$ git tag -d <tag name>            #本地删除$ git origin: refs/tags/<tag name> #远程删除另外多提一句,码云其实就是一个中文版的GitHub,而且支持私有化你的项目,很强大,嗯,我赌五毛这两者肯定有PY关系...

这里讲下工作区、暂存区、分支三者的关系。如图:

这里写图片描述

工作区就是你的仓库,那个 .git 文件同一路径下的都是工作区,

除了那个 .git 。 没错 .git 是版本库,这里面有暂存区和分支。