Git工具和GitHub的使用
一、Git工具的安装
1)centos系统下安装
1.1)查看环境
[root@gitlab ~]# rpm -qa centos-release
centos-release--4.1708.el7.centos.x86_64
[root@gitlab ~]# uname -a
Linux gitlab 3.10.-.el7.x86_64 # SMP Tue Aug :: UTC x86_64 x86_64 x86_64 GNU/Linux
[root@gitlab ~]# getenforce
Disabled
[root@gitlab ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld()
1.2)yum安装,yum 工具
#centos 自带git
[root@gitlab ~]# rpm -qa git
git-1.8.3.1-.el7.x86_64 #安装方法
yum install git -y
1.3)编译安装。建议使用编译安装。自带的git版本较低
git工具下载:https://github.com/git/git/releases
# 安装依赖关系
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
# 编译安装
tar -zxf git-2.0..tar.gz
cd git-2.0.
make configure
./configure --prefix=/usr
make
make install
编译安装

yum install autoconf -y

yum install zlib-devel -y
yum install -y perl perl-devel
2)Windows下安装
过程略
2)git命令的基本使用,如显示文件,创建文件
lenvovo@LENVOVO-PC MINGW32 /e/test
$ mkdir git_test # 创建文件夹 lenvovo@LENVOVO-PC MINGW32 /e/test
$ cd git_test/ # 进入文件夹 lenvovo@LENVOVO-PC MINGW32 /e/test/git_test
$ git init # git 初始化,生成 .git下的隐藏文件
Initialized empty Git repository in E:/test/git_test/.git/ lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master)
$ cd .git/ # 进入隐藏文件 lenvovo@LENVOVO-PC MINGW32 /e/test/git_test/.git (GIT_DIR!)
$ ls # 显示隐藏文件内容
config description HEAD hooks/ info/ objects/ refs/ lenvovo@LENVOVO-PC MINGW32 /e/test/git_test/.git (GIT_DIR!)
$ cd .. lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master)
$ ls -a
./ ../ .git/
lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master)
$ cat first_program.py
def sayhi(name):
print("hello world!",name)
基本命令使用
git init # 初始化文件
3)提交文件
lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master)
$ git add first_program.py # 将代码放入暂存区
warning: LF will be replaced by CRLF in first_program.py.
The file will have its original line endings in your working directory.
lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master)
$ git commit # 存入暂存区,失败,因为要表明是谁提交的代码 *** Please tell me who you are. Run git config --global user.email "you@example.com"
git config --global user.name "Your Name" to set your account's default identity.
Omit --global to set the identity only in this repository. fatal: unable to auto-detect email address (got 'lenvovo@LENVOVO-PC.(none)')
lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master)
$ git config --global user.email "1257063655@qq.com" # 写邮箱名 lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master)
$ git config --global user.name "lover" # 写用户名
lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master)
$ git commit # 再提交,会弹出一个文件,里面必须添加为什么要提交文件
[master (root-commit) ] git test commit
file changed, insertions(+)
create mode first_program.py lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master)
$ git commit # 再提交,显示没有内容需要提交了
On branch master
nothing to commit, working tree clean
提交文件
4)修改文件回滚操作,前提是没有git add
lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master)
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory) modified: first_program.py Untracked files:
(use "git add <file>..." to include in what will be committed) readme no changes added to commit (use "git add" and/or "git commit -a") lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master)
$ cat first_program.py
def sayhi(name):
print("Hello sb!",name)
print('user')
print('Second change') lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master)
$ git checkout first_program.py lenvovo@LENVOVO-PC MINGW32 /e/test/git_test (master)
$ cat first_program.py
def sayhi(name):
print("Hello sb!",name)
print('Second change')
回滚
5)命令总结
git add first_program.py # 将文件放入暂存区
git add . # 提交整个目录与暂存区
git commit # 如果失败需要要表明是谁提交的代码
git config --global user.email "1257063655@qq.com" # 写邮箱名
git config --global user.name "lover" # 写用户名
会弹出一个文件,里面必须添加为什么要提交文件
git commit -m "second commit test" # 避免弹框,将为什么提交写在后面
git status # 查看文件的状态
git checkout first_program.py # 回滚操作,前提是没有git add,还原到上次提交时的文件 # 提交之后的回滚
git log # 查看提交的日志
git log --pretty=oneline # 忽略不重要的信息
git reset --hard HEAD^ # 回滚到上一次提交时
git reset --hard 8323763f7b5dfd365f593fb724346ce692bdc258 # 回滚到指定的版本号
git reset --hard # 写上前6位就可以了
# 如果关闭了命令行,找不到了版本号
git reflog # 回滚的最后招数,所有的操作记录都显示了,可查看到版本号
6)git 提交代码
git使用账号:
账号:user03
密码:
======================================
mkdir -p /root/user_git
cd /root/caojin_git/
git clone http://192.168.1.5/ODW/ProjectD_svr.git
cd ProjectD_svr
git checkout trunk 从线上拉取分支代码 每天第一次执行的操作
cd /root/user_git/ProjectD_svr/
git pull 从服务器更新代码到本地
=============================
# 修改代码后
git status 查看差异文件
git diff 文件
===对比无误
git add test.py git commit -m "add test" 提交
第一次提交时
git config --global user.email "11111111@qq.com"
git config --global user.name "user03"
再进行git commit
git push
需要输入用户名,密码
二、github的使用
1)创建好账号后,创建项目


2)创建好项目后。操作提示

3)克隆创建的项目代码
使用https的方式

4)修改代码后上传至GitHub仓库



上传代码步骤总结
git clone https://github.com/xxxx/xxxxxxx # 克隆代码到本地
修改文件之后
git add .
git commit -m "first_commit"
git config --global user.email "125@qq.com"
git config --global user.name "you name"
git push -u origin master # 上传至远程仓库
输入用户名
输入密码
5)将已有的本地仓库推送到GitHub仓库中

在本地git仓库里面执行的操作都将上传至GitHub
git remote add origin https://github.com/xxxx/xxxxxxx
git push -u origin master
6)使用秘钥的方式
先在本地生成秘钥


再将秘钥内容拷贝到GitHub的setting里面:deploy keys里只对该仓库有效


SSH and GPG keys对所有仓库有效:new ssh key

7)做了秘钥之后,可以使用ssh克隆GitHub仓代码


git clone git@github.com:xxxx/xxxxxxx
修改文件
git add .
git commit -m "change on linux"
git push origin master
三、开发流程。GitHub的分支管理
1)分支使用流程

创建了分支之后,提交会显示分支出来。

分支使用流程总结
git checkout -b dev # 创建dev分支
git branch # 查看分支
* dev # *,当前分支
master 主分支
提交......
git push origin dev # 提交到自己的分支上 git checkout master # 切换到 主分支
git branch # 查看分支
dev
* master # 当前是在主分支
2)分支与主库合并代码
在主库上
git pull 更新主库代码
Already up-to-date
git merge dev # 合并分支的代码
只能合并没有相同的文件,有相同的文件,就有冲突 git status # 查看主库和分支代码不一样的地方
both modified : first_program.py # 该文件都修改了
vim first_program.py # 查看文件差异,解决冲突
def sayhi(name):
....
<<<<< HEAD
主库代码
=======
都有的代码
>>>>> dev
分支代码
git add .
git commit -m "test"
git push origin master
需要使用比对工具软件

3)如果主库已经更新,分支继续开发新代码,合并时也需要处理冲突问题

4)保存当前环境的工作代码
git stash # 把当前工作环境临时保存
git stash apply # 恢复之前保存的临时工作
git stash list # 查看临时保存的列表
git stash drop # 删除当前临时保存的环境备份
git stash pop # 恢复并删除临时保存的备份
5)编辑不想维护,不想上传的代码
vim .gitignore # 编辑忽略不想要的上传的文件
四、总结
多人开发的工作模式
、首先,可以试图用git push origin branch-name推送自己的修改;
、如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
、如果合并有冲突,则解决冲突,并在本地提交;
、没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功
原来链接:https://www.cnblogs.com/alex3714/articles/5930846.html
Git工具和GitHub的使用的更多相关文章
- windows中使用Git工具连接GitHub(配置篇)
		
Git在源码管理领域目前占很大的比重了,而且开源的项目很多都转到GitHub上面了.例如:jQuery, reddit, Sparkle, curl, Ruby on Rails, node.js, ...
 - 使用git工具删除github上的文件或者文件夹
		
解决 使用git工具删除github上的文件或者文件夹 当我们需要从github上删除一些我们不需要的文件或者文件夹时,如果通过github来操作的话,将会很麻烦,因为github只允许删除一个仓库, ...
 - 使用Windows下的git工具往github上传代码 踩坑记录
		
使用Windows下的git工具往github上传代码 踩坑记录 背景 由于以前接触的项目都是通过svn进行版本控制,现在公司项目使用git,加上自己平时有一个练手小项目,趁着周末试着把项目上传到自己 ...
 - 如何使用git工具向github提交代码
		
大致分为以下几个步骤 安装git环境,工具使用msysgit github上的账号 首先在github上点击头像旁边的加号 add new ,选择new Repository,自己创建一个名字,假设取 ...
 - GitBook是一个命令行工具(Node.js库),我们可以借用该工具使用Github/Git和Markdown来制作精美的图书,但它并不是一本关于Git的教程哟。
		
GitBook是一个命令行工具(Node.js库),我们可以借用该工具使用Github/Git和Markdown来制作精美的图书,但它并不是一本关于Git的教程哟. 支持输出多种格式 GitBook支 ...
 - 使用git工具将项目上传到github
		
注册github账号 https://github.com/ 安装git工具: https://git-for-windows.github.io/ 上面的准备工作完成后,现在开始操作. 一.进入gi ...
 - 使用git工具快速push项目到github(精简)
		
Dear Weber ,相信有很多刚开始接触前端的程序猿,在刚接触到git工具传项目到github上时会遇到一些问题,那么下面的话呢,我就整理一下一个大致的思路提供给大家参考: 工具:git (自行下 ...
 - 在Windows使用git工具将代码同步至github(作者:ying1989920)
		
 [ps]git是一个分布式代码管理工具,类似于svn,方便协同开发,git里面有所谓的仓库(用来存放代码的),分为本地和线上,线上的你可以自己搭建,不想搭建的话github就给你提供了. [关于 ...
 - 代码管理工具:使用github和git工具管理自己的代码
		
一.git工具和账户创建 1.1 安装 Git 是 Linus Torvalds 最近实现的源代码管理软件."Git 是一个快速.可扩展的分布式版本控制系统,它具有极为丰富的命令集,对内部系 ...
 
随机推荐
- python 读取文件第一列 空格隔开的数据
			
file=open('6230hand.log','r') result=list() for c in file.readlines(): c_array=c.split(" " ...
 - Python3 reversed 函数
			
Python3 reversed 函数 Python3 内置函数 描述 reversed 函数返回一个反转的迭代器. 语法 以下是 reversed 的语法: reversed(seq) 参数 se ...
 - LightOJ - 1027 Dangerous Maze  期望
			
你在迷宫中;开始时在你面前看到n扇门.你可以选择你喜欢的任何门.所有门的选择门的概率是相等的. 如果您选择第i个门,它可以让您回到您在xi(xi小于0)分钟内开始的相同位置,也可以在xi(xi大于0) ...
 - python读写文件中read()、readline()和readlines()的用法
			
python中有三种读取文件的函数: read() readline() readlines() 然而它们的区别是什么呢,在平时用到时总会遇到,今天总结一下. 0. 前期工作 首先新建一个文件read ...
 - while 解决 10000米绳子 对折当 绳长小于5米时求绳的对折次数
			
public static void main(String args[]){ double length = 10000; int day = 0; while(day > 5){ lengt ...
 - vue 返回上一页后,上一页由参数渲染的内容无法显示
			
思路1:将参数传递给第二个页面后,返回上一页时,再讲参数传回第一页(此方法适用于层级少的)(亲测有效) 思路2:将参数放到全局变量中(还未尝试过)
 - JQuery|jstl判断是否为空
			
//有如下三种判断 var A=$("#**).val(); if(A==null||A==undefined||A==""){ //处理 } //参考文章1说下面方法效 ...
 - jQuery 向另一个页面传参,同时跳转到该页面
			
为了使参数能够传递到另外一个页面,使用ajax的跳转方式 $.ajax({ type: "POST", url:"/admin/sysjgl/sysjck/sjcs&qu ...
 - python 3.6.5    map()  max()  lambda匿名函数
			
python 3.6.5 sample: map() 会根据提供的函数对指定序列做映射. 第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 functi ...
 - Java并发-volatile的原理及用法
			
Java并发-volatile的原理及用法 volatile属性:可见性.保证有序性.不保证原子性.一.volatile可见性 在Java的内存中所有的变量都存在主内存中,每个线程有单独CPU缓存内存 ...