git单机, 远程仓库, 分支管理
单机上使用git - 安装
- yum install -y git mkdir /data/gitroot
- cd /data/gitroot
- git init //初始化仓库
- echo -e “123\naaa\n456\nbbb” > 1.txt //创建一个新文件
- git add 1.txt//把1.txt添加到仓库
- git commit -m “add new file 1.txt” //add完了必须要commit才算真正把文件提交到git仓库里
- 再次更改1.txt
- git status //查看当前仓库中的状态,比如是否有改动的文件
以下两个命令,修改时会记录修改人的信息,这样才能跟踪变化,没有设置需要设置一下git config --global user.email "you@example.com"git config --global user.name "Your Name"[root@draft git1]# git status #全部文件都同步的状态;
# 位于分支 master
无文件要提交,干净的工作区
[root@draft git1]# git status #有修改时的状态,需要add - commit更新;或恢复到上一个状态都可以;
# 位于分支 master
# 尚未暂存以备提交的变更:
# (使用 "git add <file>..." 更新要提交的内容)
# (使用 "git checkout -- <file>..." 丢弃工作区的改动)
#
# 修改: README.md
#
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
- git diff 1.txt //可以对比1.txt本次修改了什么内容,相比较仓库里面的版本
单机上使用git - 版本回退
- 多更改几次1.txt,然后add,commit
- git log//查看所有提交记录
- git log --pretty=oneline//一行显示
- git reset --hard f7c8e9//回退版本,其中后面跟的字符串是简写
- 撤销修改
rm -f 1.txt//不小心删除了1.txt (情况1)
git checkout – 1.txt//恢复1.txt
如果1.txt文件修改,add后但没有commit,再想回退到上一次提交的状态(情况2),可以使用git reset HEAD 1.txt,再执行git checkout – 1.txt - git reflog //查看所有历史版本
[root@draft git2]# git reflog
29c487e HEAD@{0}: commit: rm #文件已删除;
500a08a HEAD@{1}: reset: moving to 500a08a
8e860db HEAD@{2}: commit: mo 5
fee3e53 HEAD@{3}: reset: moving to fee3e53
500a08a HEAD@{4}: reset: moving to 500a08
45d1c39 HEAD@{5}: reset: moving to 45d1c
500a08a HEAD@{6}: commit: mo 4
63c54a6 HEAD@{7}: commit: mo 3
fee3e53 HEAD@{8}: commit: mo 2
45d1c39 HEAD@{9}: commit: mo 1
9c38131 HEAD@{10}: commit (initial): add new
[root@draft git2]# git log --pretty=oneline #commit记录;
29c487e3f9737409424ea4d0bfcd2e9f32d29673 rm
500a08a72af0328b1f907506ca0536cfba5050a8 mo 4
63c54a68b6c5d660be666c62bb994a5814eded1a mo 3
fee3e53c292138e4e17fa5f880c09acf581bdab4 mo 2
45d1c39ad12883460fb7a8a398e7a25986ef1a6b mo 1
9c3813143a09568e93ece5f8fd7a4a0985dd0a45 add new
[root@draft git2]# ls #没有文件;
[root@draft git2]# git reset --hard fee3e53 #回退到mo 2;
HEAD 现在位于 fee3e53 mo 2
[root@draft git2]# git log --pretty=oneline
fee3e53c292138e4e17fa5f880c09acf581bdab4 mo 2
45d1c39ad12883460fb7a8a398e7a25986ef1a6b mo 1
9c3813143a09568e93ece5f8fd7a4a0985dd0a45 add new
[root@draft git2]# git reflog
fee3e53 HEAD@{0}: reset: moving to fee3e53 #增加了一行;
29c487e HEAD@{1}: commit: rm
500a08a HEAD@{2}: reset: moving to 500a08a
8e860db HEAD@{3}: commit: mo 5
fee3e53 HEAD@{4}: reset: moving to fee3e53
500a08a HEAD@{5}: reset: moving to 500a08
45d1c39 HEAD@{6}: reset: moving to 45d1c
500a08a HEAD@{7}: commit: mo 4
63c54a6 HEAD@{8}: commit: mo 3
fee3e53 HEAD@{9}: commit: mo 2
45d1c39 HEAD@{10}: commit: mo 1
9c38131 HEAD@{11}: commit (initial): add new
单机上使用git - 删除文件
- git rm 2.txt
- git commit -m “rm 2.txt”
建立远程仓库
- 首先到 https://github.com 注册一个账号,创建自己的git,点repositories 再点new
需要最新的浏览器支持,如safari,不然显示不出验证码 - 名字自定义,比如叫git2 - 选择public - 点create repository
出现页面和命令,指引在本地推送一个文件到远程仓库上;
可以以多种方式连接,都有具体的指引;
也有指引将本地库同步到远程,从其他代码管理平台导入;
连接过后,之后就可以更方便的更新信息; - 这里使用SSH连接,把公钥上传到github系统中;
添加key:右上角点自己头像,选择settings,左侧选择SSH and GPG keys
左侧点New SSH key,把linux机器上的~/.ssh/id_rsa.pub内容粘贴到这里 - 把本地仓库与远程仓库连接的重要命令
git remote add origin git@github.com:tanyyinyu/git2.git
git push -u origin master - 操作后下一次再推送,就可以直接 git push
更新到本地库是add - commit
更新到远程库是add - commit - push
克隆远程仓库
- 克隆一个自己的仓库
[root@draft git]# rm -rf git1
[root@draft git]# ls
git2
[root@draft git]# git@github.com:tanyyinyu/git1.git^C
[root@draft git]# git clone git@github.com:tanyyinyu/git1.git
正克隆到 'git1'...
Warning: Permanently added the RSA host key for IP address '13.250.177.223' to the list of known hosts.
remote: Enumerating objects: 9, done.
remote: Counting objects: 100% (9/9), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 9 (delta 0), reused 3 (delta 0), pack-reused 0
接收对象中: 100% (9/9), done.
[root@draft git]# cd git1
[root@draft git1]# ls
README.md
[root@draft git1]# touch 1.txt
[root@draft git1]# git add 1.txt
[root@draft git1]# git commit -m "add txt"
[master 5271920] add txt1 file changed, 0 insertions(+), 0 deletions(-)create mode 100644 1.txt
[root@draft git1]# git push #远程git界面会更新新的文件;
warning: push.default 未设置,它的默认值将会在 Git 2.0 由 'matching'
修改为 'simple'。若要不再显示本信息并在其默认值改变后维持当前使用习惯,
进行如下设置:git config --global push.default matching若要不再显示本信息并从现在开始采用新的使用习惯,设置:git config --global push.default simple参见 'git help config' 并查找 'push.default' 以获取更多信息。
('simple' 模式由 Git 1.7.11 版本引入。如果您有时要使用老版本的 Git,
为保持兼容,请用 'current' 代替 'simple' 模式)Counting objects: 4, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 268 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@github.com:tanyyinyu/git1.gitce537ac..5271920 master -> master
- 远程界面更新文件
进入相应文件,点击右下方的笔图标
修改内容后 - commit changes (保存了内容)
本地下载更新
[root@draft git1]# git pull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
来自 github.com:tanyyinyu/git15271920..5ea9c55 master -> origin/master
更新 5271920..5ea9c55
Fast-forward1.txt | 1 +1 file changed, 1 insertion(+)
[root@draft git1]# cat 1.txt
change from far end
- 克隆一个别人的仓库
[root@draft git]# git clone git@github.com:aminglinux/lanmp.git #由于没有这个仓库的私钥或没有上传自己的公钥,不能对此仓库写入;
正克隆到 'lanmp'...
remote: Enumerating objects: 32, done.
remote: Total 32 (delta 0), reused 0 (delta 0), pack-reused 32
接收对象中: 100% (32/32), 5.99 KiB | 0 bytes/s, done.
处理 delta 中: 100% (6/6), done.
[root@draft git]# cd lanmp/
[root@draft lanmp]# ls
lanmp.sh README.md
分支管理
- 分支基础
git branch //查看分支
git branch aming //创建分支
git checkout aming //切换到了aming分支下
再用git branch查看,会看到有两个分支master和aming,当前使用的分支前面会有一个*在aming分支下 ,编辑2.txt,并提交到新分支
echo “askdfjlksadjflk” > 2.txt
git add 2.txt
git commit -m “laksjdflksjdklfj”
切换回master分支
git checkout master //此时cat 2.txt发现并没有更改内容
[root@draft git2]# git branch
* master
[root@draft git2]# git branch tany
[root@draft git2]# git branch
* mastertany
[root@draft git2]# git checkout tany
切换到分支 'tany'
[root@draft git2]# git branch master
* tany
[root@draft git2]# ls
1.txt
[root@draft git2]# echo "kjkj branch tany " >> 1.txt
[root@draft git2]# git add 1.txt
[root@draft git2]# git commit -m "change"
[tany bd83327] change1 file changed, 1 insertion(+)
[root@draft git2]# cat 1.txt
lkkl
mo 1
mo 2
kjkj branch tany
[root@draft git2]# git checkout master
切换到分支 'master'
[root@draft git2]# cat 1.txt
lkkl
mo 1
mo 2
- 分支的合并
git checkout master //合并分支之前,先切换到目标分支
git merge aming //把aming分支合并到了master
如果master分支和aming分支都对2.txt进行了编辑,当合并时会提示冲突,需要先解决冲突才可以继续合并。
解决冲突的方法是在master分支下,编辑2.txt,改为aming分支里面2.txt的内容。 然后提交2.txt,再合并aming分支。
但是这样有一个问题,万一master分支更改的内容是我们想要的呢? 可以编辑2.txt内容,改为想要的,然后提交。切换到aming分支,然后合并master分支到aming分支即可(倒着合并)。合并分支有一个原则,那就是要把最新的分支合并到旧的分支。也就是说merge后面跟的分支名字一定是最新的分支。
git branch -d aming //删除分支 如果分支没有合并,删除之前会提示,那就不合并,强制删除
git branch -D aming //强制删除分支
[root@draft git2]# git merge tany
更新 fee3e53..bd83327
Fast-forward1.txt | 1 +1 file changed, 1 insertion(+)
[root@draft git2]# cat 1.txt
lkkl
mo 1
mo 2
kjkj branch tany
[root@draft git2]# git branch -d tany
已删除分支 tany(曾为 bd83327)。
git单机, 远程仓库, 分支管理相关推荐
- Git 远程仓库分支管理
目录 目录 速查表 关联远程代码仓库 克隆远程仓库 分支管理 创建分支 切换分支 合并分支 删除分支 解决冲突 速查表 指令 作用 git branch 查看分支 git branch newBran ...
- Git删除远程仓库分支
首先使用Git命令查看当前所有分支: 可以看到有master和dev分支,现在要删除远程仓库的dev分支,命令如下: ①首先删除本地分支: git branch -d dev ②删除远程仓库分支: g ...
- Git 远程仓库的管理和使用
要参与任何一个 Git 项目的协作,必须要了解该如何管理远程仓库.远程仓库是指托管在网络上的项目仓库,可能会有好多个,其中有些你只能读,另外有些可以写.同他人协作开发某 个项目时,需要管理这些远程仓库 ...
- git 拉取远程仓库分支代码
git 拉取远程仓库分支代码 本地新建文件夹作为工作区(存放代码的文件夹) 进入该文件,右键选择 git bush here,打开命令窗后,输入初始化命令:git init 命令行:git remot ...
- 小乌龟git如何同步远程分支_git同步远程仓库分支
git命令 1.何谓同步远程分支?有下面几种情况, 1.本地有新分支,远程仓库没有. 2.远程仓库有新分支,本地没有. 3.本地删除了分支,远程也想删除. 4.远程删除了分支,本地也想删除. 第一种情 ...
- Git关联远程仓库和分支
背景 在我们开发过程中经常会将本地代码放到代码仓中. 解决方法有两种,这两种方法都有一个前提就是需要在gitLab中新建一个代码仓. 第一种方法就是先将这个新的远程代码仓拉取到本地,再将本地的代码移植 ...
- Eclipse 删除Git远程仓库分支
Eclipse 删除Git远程仓库分支 一.步骤如下 1.选中项目 --- 右键 --- Team --- Remote --- Push --- 2.选中 "Add delete ref ...
- git远程仓库分支的各命令的具体解析(git remote add)
0 可参考文章 本文重点参考的Git官方中关于git远程仓库的使用教程: 2.5 Git 基础 - 远程仓库的使用 3.5 Git 分支 - 远程分支 1 问题背景 看完上面的教程后,我们再一步一步抠 ...
- Git学习笔记:分支管理3
前言 在补习python的时候主要参考的是廖雪峰的教程Python教程,在学习完后准备完成期末作业时,遇到了一个技术难题,需要初步掌握git,因此开始了git的学习. 本教程参考廖雪峰的Git教程 G ...
最新文章
- 实战ALV OO技术实现添加工具条按钮
- Kubernetes实用技巧
- 如何挖掘消费者的隐性需求?
- Vim和Vi的常用命令
- python 抓取网页链接_从Python中的网页抓取链接
- Oracle RMAN备份与还原 - 联机备份讲解
- Hao Yin Jian 寒假第一周
- 利用MVC思想和php语言写网站的心得
- 华为机试4.20:新员工考试
- awk NR详解!awk 的内置变量 NF、NR、FNR、FS、OFS、RS、ORS
- 使用echarts做气泡图
- Django(14)-应用及分布式路由
- maven.类包冲突解决案例
- HTTP断点续传以及缓存问题
- JS基础—PC端网页特效
- 已解决NameError: name ‘XXX‘ is not defined
- 中国公布建设网络强国的时间表和路线图
- 简单的http抓包(微信公众网页登录模拟)
- Python-Python基础代码实现
- aiwi国内最大体感游戏平台 领跑体感游戏第一线
热门文章
- 维生素B3的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 用户走进计算机世界,走进计算机世界说课稿.doc
- 机器人建模中移动关节如何建立坐标系_【技术分享】西门子工业软件数字化工艺仿真新技术新亮点(四) 机器人仿真...
- Spring自定义标签使用及原理
- 计算机本科管理信息系统论文,本科软件工程专业毕业论文 计算机信息管理系统.doc...
- python测试脚本实例-使用python测试框架完成自动化测试并生成报告-实例练习
- 多思计算机组成原理实验:模型机课程设计
- 关于Cocos2d-x的enableRetinaDisplay函数
- 【汇智学堂】-python小游戏(太空阻击之三-场景创建)
- js_RPC,sekiro框架,实现HTTPS通讯