• Github和Git的使用


    篇幅较长, 右面有目录, 可跳转查看

    1. Git 和 Github基本概念

    Git
    Git 是目前业界最流行的版本控制系统(Version Control System),一个开源的分布式版本控制系统
    Git 作为一个开源项目,其代码本身就被托管在 GitHub 上,如果您感兴趣,可以上去一观其真容。Git 项目地址:https://github.com/git

    Github
    GitHub 本质上是一个代码托管平台,它提供的是基于 Git 的代码托管服务


    2. 前期准备

    1. 在Github网站注册自己的账号
    2. 下载安装Git

    3. 使用Github

    1.新建仓库(repository)

    图片

    2.克隆项目(这里使用的是SSH,类似于Linux的公钥密钥)

    • 1.检查现有的ssh密钥
      • 打开Git Bash
      • 输入ls -al ~/.ssh以查看是否存在现有的SSH密钥
    • 2.(若不存在)则生成新的密钥
      • 在Git Bash输入ssh-keygen -t rsa -b 4096 -C "your_email@example.com", 然后三次回车
    • 3.向GitHub帐户添加新的SSH密钥
      • 1.在Git Bash输入clip < ~/.ssh/id_rsa.pub(也可以到此路径下手动复制)
      • 2.在Github网站中add new ssh keys, 输入已经拷贝到剪切板(输入上面那个命令不报错的话就已经拷贝到剪切板了)的密钥
      • 3.在本地打开Git Bash, 输入git clone <自己的项目地址> <directory可选目录>, 就可以把项目拷贝到本地(当前目录, 即打开Github的目录)了
        图片

    4. Git基础(上传项目)

    1. Git概念

    • 工作区:就是你在电脑里能看到的目录
    • 暂存区:英文叫stage, 或index。一般存放在 ".git目录下" 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
    • 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
      图片

    2. 工作区目录

    图片

    3.学习上传

    1. 上传

    • 新建HelloWorld.txt文件(假装是被编辑过的项目代码)
    • 在项目目录下(或cd到)打开Git Bash, 输入git status
      图片
      此时, 被修改的文件在工作区
    • 添加到暂存区 git add HelloWorld.txt
      图片
    • 提交到Git仓库 git commit -m 'a first commit'(参数-m为提交时的信息message)
      图片
      此时提示我们要确认身份(提交用户名和邮箱)
    • 设置用户名和邮箱并提交 git config --global user.email "邮箱号" git config --global user.name "用户名" git commit -m 'a first commit'
      图片
    • 使用“git push”发布本地提交 git push (提交前先git pull, 因为别人可能有更新)
      图片
      若出现上述情况(可能是因为你修改了用户名或邮箱,被认为是两个人), 用reset, 然后重新提交`

    2.查看
    查看日志git log 查看某次提交的详细信息git show id号
    图片

    3.提交有问题, 要reset

    git reset 676c6cf3c6eb66452c65240736114eb23545c1f0(要保留的id号)
    图片
    然后重新上传就行了


    5. 解决冲突

    1.模拟两个人共同开发,导致冲突

    1. 重新克隆一份项目(假装是另一个同事修改的) git clone git@github.com:user-h/TestGit.git(项目地址) TestGit2(保存目录)
    2. 修改TestGit2目录下HelloWorld.txt文件并提交(提交步骤见上面(修改username或email),[失败的话,用reset回滚??])
    3. 修改TestGit下HelloWorld.txt的内容,提交(git add HelloWorld.txt git commit -m 'lltz commit 1')
    图片
    提示你已经不是最新的了, 请先使用git pull整合

    2. 解决

    1. 使用git pull
    图片
    执行之后,提示 自动合并冲突文件. 此时TestGit下的HelloWorld.txt变为
    图片

    2. 此时手动修改文件并在次提交git add HelloWorld.txt git commit -m 'merge commit 1' git push
    图片


    6. 多分支开发

    在同一分支上开发会导致不停地解决冲突,所以团队协作时需要多分支开发
    1.创建分支git branch branch1 切换分支 git checkout branch1
    图片

    2.编写代码
    新建文件HelloWorld.java

    class Demo{
    	public static void main(String[] args){
    		System.out.println("Hello Java");
    		System.out.println("Hello World");
    		System.out.println("Hello Git");
      	}
    }
    

    3.提交:
    git add HelloWorld.java git commit -m 'helloworld' git push
    此时会提示没有远程的分支,需要设置远程分支git push --set-upstream origin branch1(这时从网友Github也可以看到多分支)
    图片

    4.模拟另一个分支

    • 把HelloWorld.java拷贝到TestGit2,并做相应修改(假装是另一个同事的编辑)
    • 剪出并创建新的分支git checkout -b 'branch2'(相当于创建 切换两个命令)
    • 上传: git add . git commit -m 'helloworld' git push --set-upstream origin branch2
      图片

    5.合并发布

    • 先回到master分支 git checkout master
    • 因为可能有人更新代码,所以先拉取一下:git pull 把分支1合并到master:git merge branch1 git push
      对分支2执行同样操作git checkout master git pull git merge origin/branch2 git push(此时还是会出现冲突,需要合并)
      图片

    7. 使用ide快速解决冲突

    1.项目导入idea

    2.解决冲突

    右键项目 -> Git -> Resolve Conflicts(尝试解决冲突) -> 双击Modified
    不同步.idea 修改.gitignore文件,加入.idea/

    快速修改完成后 git add . git commit -m 'finish' git push OK, 结束

    附.创建仓库(使用一个已经存在的目录作为Git仓库)

    1.使用当前目录作为Git仓库,我们只需使它初始化:git init(git init <指定目录>)
    2.目录下文件纳入版本控制git add .(git add *.java所有java后缀的文件)
    3.提交git commit -m '初始化项目版本'
    4.连接到远程仓库,并将代码同步到远程仓库

    • git remote add origin 远程仓库地址 连接到远程仓库并为该仓库创建别名 , 别名为origin . 这个别名是自定义的,通常用origin
    • git push -u origin master 由于新建的远程仓库是空的,所以要加上-u这个参数, 非空后git push origin master即可
      创建一个 upStream (上传流),并将本地代码通过这个 upStream 推送到 别名为 origin 的仓库中的 master 分支上

    -u ,就是创建 upStream 上传流,如果没有这个上传流就无法将代码推送到 github;同时,这个 upStream 只需要在初次推送代码的时候创建,以后就不用创建了
    另外,在初次 push 代码的时候,可能会因为网络等原因导致命令行终端上的内容一直没有变化,耐心等待一会就好。

    5. 报错, 由于你新创建的那个仓库里面的README文件不在本地仓库目录中,这时我们可以通过以下命令先将内容合并一下git pull --rebase origin master
    图片



    人生之事岂能尽如人意,生活如戏,哭笑皆由人,悲喜自己定
  • 相关阅读:
    分享memcache和memcached安装过程(转)
    ios画图总结
    mac os下通过命令行的方式编译c++代码并在xcode里引用
    ubuntu访问windows共享文件夹
    为iphone 及iphone simulator编译boost库
    ubuntu 11.10 x64 安装oracle 11gR2时碰到的问题及解决方法
    模拟器与真机下ffmpeg的编译方法(总结版)
    ios 在View里绘图
    memcached1.4.4在ubuntu下编译的注意事项
    Google Code 服务试用
  • 原文地址:https://www.cnblogs.com/Hephaestus/p/12826064.html
Copyright © 2020-2023  润新知