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
图片



人生之事岂能尽如人意,生活如戏,哭笑皆由人,悲喜自己定
原文地址:https://www.cnblogs.com/Hephaestus/p/12826064.html