github 基本使用(新手)

初学GitHub 这篇博客也是复习记忆使用,有缘看到该博客的人请不吝指出错误。。。

Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。
GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名GitHub。

Git 安装 由于Git是Linux的作者开发的,因此在Linux下安装是十分方便的
如Ubuntu下 sudo apt-get install git-core

WIndow下安装 可以找到一个安装包 https://gitforwindows.org/就是一个普通的安装包,和普通软件一样安装即可。默认勾选,一直下一步即可。安装完成后 git默认已经配置好了环境变量,可以直接使用git 命令
Git版本

Git本地仓库 包含工作区与版本区。版本区又 分为 暂存区与仓库区。
Git仓库关系

**Git 本地仓库使用 **

首先可以配置自己身份 从开始菜单找到Git Bash 打开

git config --global user.name "用户名"
git config --global user.email "邮箱"

配置完成可以查看配置是否生效

git config --global user.name
git config --global user.email

配置完成后开始真正使用

新建一个文件夹作为 Git的实验文件夹,如GitTest。进入该文件夹
可以通过鼠标右键点击出现的工具栏选择Git Bash Here 即可打开Git 命令行操作窗口。

初始化该文件夹 git init
初始化该文件夹
可以看到该文件内多了一个隐藏文件夹 .git,隐藏文件显示百度一下。这个文件夹用来记录本地所有的Git操作。

新建一个文件
新建文件

GitBash 查看状态 git status 如果中文乱码输入git config --global core.quotepath false
未关联文件
可以看到未关联文件 大侠.txt

提交代码: 只要使用 add 与 commit 命令就可以了。
添加:

git add 大侠.txt
git status 

add
使用add命令可将 指定文件添加到 暂存区 等待提交。 如果觉得一个一个添加太麻烦可使用

git add -A  或 git add .

提交:git commit -m "提交信息" 每次提交时一定要加上提交信息

git commit -m "First commit"
git status

commit
提交后再次查看状态可以看到没有可提交的了。可查看记录 git log
提交记录
可以看到提交过一次,提交信息是 First commit

修改 大侠.txt 添加文字 查看git状态使用git diff可查看新增内容与版本库中的区别
显示区别
可使用 git diff 文件名 查看指定文件的区别。修改后可使用 add commit 再次提交到仓库区。

如果修改后未进行 add 添加到暂存区时 发现修改有误。决定撤回修改。可使用命令

git checkout -- 文件名

checkout撤回
这是打开该文件会发现刚才的修改已经失效了。

如果已经使用 add 命令添加进暂存区 这是直接使用 git checkout -- 大侠.txt命令就没有效果
无效
此时 需要 git reset HEAD 文件名 后再执行 checkout

git reset HEAD 大侠.txt

reset HEAD
重新修改后 再次提交。

查看提交记录 git log
总记录
git log 不只包含提交记录,还包括合并记录等

如果记录过多 只想查看其中一条 可以在命令中指定该记录id

 git log ce7440863f570a3aa4030a57d6f045c9f4a2435e -1

还可以查看该条记录具体修改了什么内容

git log ce7440863f570a3aa4030a57d6f045c9f4a2435e -1 -p

查看提交记录
注 只用 id 前7 位即可查出不必写全。。。

现在有两条提交记录 可进行 版本恢复 git reset --hard 版本号前7位 如恢复到未添加丁典状态

 git reset --hard 418dc5b

如此做 会使 版本会退到第一次提交后状态。且 git log 命令也只能查出第一次提交记录

可以git reflog查看之前版本 然后可使用git reset --hard 版本号回到 当前版本

git reflog
git reset --hard 版本号

reflog

分支及分支合并
分支主要作用就是在现有代码基础上开辟一个分叉口,使得代码可以在主干线和分支线上同时进行开发,且相互不会影响。
查看当前版本库有哪些分支

git branch

git branch
毫无疑问当前只有一个 master 可理解为主干支

创建一个分支 如 version1.0 git branch version1.0
创建分支
master 带有 * 号 说明当前代码在 master分支上。切换分支 git checkout 分支名

git checkout version1.0

可以在当前分支进行一些操作, 如修改 大侠.txt 文件 添加 乔峰
然后进行 add commit 操作

再次切换到master 分支后 在 version1.0分支上做的修改并没有提交到 master版本我们可以打开文件看看刚才的添加又没有了 好神奇。。。
分支未合并

这时可以使用 merge命令来 完成 合并操作 git merge 分支名即将分支名代表的分支合并到当前分支

git checkout master		# 先切换到 master分支 已经切换过不用执行
git merge version1.0

分支合并后 即可将 version1.0做的修改 合并到 master中
合并分支
删除分支命令 git branch -D 分支名

git branch -D version1.0

与远程版本库协作

Git与GitHub关联使用。到GitHub官网注册并登录。

本地生成 ssh key

ssh-keygen -t rsa -C "邮箱"

需要按三次回车 可以根据信息找到 ssh key位置。一般是 /c/Users/Administrator/.ssh/id_rsa.pub
或者输入命令

clip <~/.ssh/id_rsa.pub

可直接复制该ssh key

打开 GitHub进入settings 找到SSH AND GPG keys 点击 New SSH key
SSH KEY

Title 随便起一个 key 就将刚才复制的粘贴上去
添加SSH KEY
输入完成 点击 Add SSH key完成添加
成功添加
测试连接是否成功

ssh -T [email protected]

连接成功
登录 GitHub 新建一个 仓库 new repository 如果建好就跳过这一步 网速慢的我好急。。。
创建远程版本库
可以创建库名 添加描述 选择公开免费 或者 private私有 收费。public 就可以,可以选择 勾选initlize… README会生成一个描述文件。 点击 Create完成创建。
地址

复制 仓库地址 [email protected]:......

本地关联GitHub git remote add origin 复制的地址
地址输入错误 可以删除 origin git romote rm origin再重新关联
上传文件 git push origin master #将本地代码同步到远程版本库的master分支
如果创建库时加入了README.md或者LICENSE那么github会拒绝push。远程版本库中有本地版本库中没有的文件,需要先将远程版本库的内容拉取到本地,再从本地推送到远程仓库。
在这里插入图片描述
可以查看

从远程版本库上获取最新代码并且合并到本地 master 分支

git pull origin master

它相当于

git fetch origin master # 将远程代码库同步到本地但不会合并到任何分支,而是存放到一个origin/master分支上。
git merge origin origin/master # 将origin/master分支上修改合并到主分支上

pull 相当于将fetch 和 merge 两个命令放在一起执行了。
在fetch之后 merge之前可以查看远程版本库到底修改了什么 git diff origin/master

git pull origin master后可以再次执行提交操作 git push origin master后便可看到远程仓库多了本地的文件

但理想总是美好的,但现实但总是有可能出现问题。。。
拉取失败
fatal: refusing to merge unrelated histories
查资料这个问题是因为 两个 根本不相干的 git 库, 一个是本地库, 一个是远端库, 然后本地要去推送到远端, 远端觉得这个本地库跟自己不相干, 所以告知无法合并
解决方法 强制合并

git pull origin master --allow-unrelated-histories

强制合并
输入命令后拉取过程可能会进入一个编辑模式。会让你输入合并信息,输入完成后 按下esc简输入
:wq即可保存退出 和Linux下 vi 很像。然后查看当前文件夹就可以发现多了个README.md。
接下来可以 推送到 远程版本库 git push origin master
推送到远程版本库
GitHub上多了本地仓库中内容
GitHub
这样就成功的建立了本地仓库与远程仓库的关联,每次想要push之前 记得要 先pull拉取远程版本库最新内容。

接下来我们尝试Ubuntu下与远程库建立连接。
安装git 设置用户信息 生成ssh key 加入到GitHub。。。这些步骤都省略

方式一 : 本地文件都提交到本地仓库后希望和远程仓库关联

git remote add origin 远程仓库地址
git pull origin master
git push origin master

基本上就是这样 但是有可能出现 本地仓库版本 高于 远程仓库版本 的情况,这时合并应该会出现错误。和Windows下的错误差不多 也是 需要填写一个 commit 信息。。。
填写commit信息
中文好看懂。。。我们可以 写一个 WindowsTest 的合并信息然后 ctrl+o输出然后回车最后 ctrl+x退出。
合并
这样就可以拉取到本地了,然后我们可以将文件推送到远程版本库

git push origin master

UbuntuCH推送
可以成功 不过存在一个问题 我们的本地版本库 仍然 高于 远程版本库 这就导致下一次拉去pull时仍然要设置提交信息 很麻烦。。。
版本超前
解决办法:这时远程仓库已经有我们本地版本库的所有代码了。所以我们可以使本地版本库 版本回退到pull之前 使之 低于 远程仓库版本。 而后再次拉取远程版本库代码。这样 本地版本库 版本就会 低于 远程版本库 也就不用每次远程拉取代码 就要输入 提交信息了

git reset --hard 版本号前7位
git pull origin master

版本回退后再次拉取
这样 就只用第一次 拉取时输入 提交信息了。

方式二: 将远程版本库clone 到 本地

git clone 远程版本库地址

clone
如果 进入WIndowsTest文件夹就可以直接与远程版本库建立联系,或者希望在本文件夹中进行操作,可以将WIndowsTest文件夹中内容全部复制到本文件夹中。不要漏掉隐藏文件夹 .git复制完毕可以删除WIndowsTest文件夹。
移动完毕
使用clone的话 不用再 执行

git remote add origin 远程地址
git pull origin master
git push origin master 

而且 提交新代码时 可以直接成功。

发布了59 篇原创文章 · 获赞 11 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/dandanfengyun/article/details/86419048