Git操作记录

Git操作记录

恩首先说明下这只是为了避免自己忘记Git操作的时候重新跑去看一遍教程写的,只是作为记录,要教程的跑去下面的三个链接处。暂时这些内容都够个人用了。以后玩服务器了我就再更相关的内容。

昨晚部长在我电脑的Ubuntu系统上想将我的代码推上Github(来的本意是想为我整理后的django上线),发现我连配置都没配置好(之前学习的时候操作都是在VirtualBox上进行),随口问了我点问题也答得不好,被吐槽一番。于是花了一下午恶补了一下Git,顺便整理成这个记录。

恩,Github真的神器啊。重要性我就拿这次和部门的人一起写报名网页的事为例吧——我们是创了个Github项目然而并没有人用,还是用回QQ。结果:

1、  目前整体工作进程无法得以准确掌握,都只能在口头上模糊交代

2、  代码开发进度极不协调。其实这很大的坑是现任的部长引起的——开发文档一团糟,对接处交代不明,整体缺乏进度交流,给我的感觉就是还不如我自己一个写完全部(如果有报酬),毫无协作感。其实也不能全怪他,要不是私下特意的去问,不同部门之间交流真的就几乎为零了。

3、  代码整理。这部分都是由我和另一写后台的完成。感到不满的是,用QQ的话要等我们各自写完了才能发给别人,由对方对现有代码进行一个整合。

①   比如说,设计的以为他弄的一草图,恩他弄的一草图,就是页面的设计图,于是后来部长和Ken(以下部长皆指带我一年的部长)跑来问我,我去问设计的时候,才发觉他们因为这一误会忽视掉了index(Fuck!!!)、succeed这些页面的设计,而前端又跟我讲在苦等设计图

②   我整合的时候发觉和我对应的前端人员并不熟悉template的写法,以致后来我要自行修改。其实问题不大,只是觉得如果能早点看到,说出来,进度能快一点。讨论组里就我和另一个写后台的干完一些事会说明进度。问题刚出现时现任部长并不见人,仅偶尔出现催进度而不过问事情。顺便吐槽一下吧反正也翻不出他名字,对MVC也不熟悉,以致在讨论组里说“我这前端改了的你们后台不跟着修改啊到时合在一起就很乱啊”,恩我和另一个写后台的都是苦笑一阵,一想到写开发文档的还得是这货心里真是…… 只是单纯的为下一届干事感到担忧。

③   恩其实准确来说是,我们是等到自己写了个能成功测试的才好意思发出去给别人看。

这还只是很小很小的开发啊,顺利的话代码方面开发其实就只要三四天的啊(实际用时就呵呵了,我也不好意思)。万一大型一点的呢,这样的效率怎么活?

好吧以下正题:

首先要熟悉仓库结构(先忽略分支问题来说明吧) —— 本地的:工作区 暂存区 版本库 与Github交互的 —— 远程库 本地Git仓库  // 这里我不会插入图片,可以看下面第一个链接那,配图非常好

项目人Github仓库 →(Fork) 自己的Github仓库/项目仓库 →(git clone) → 本地git仓库

自己在github的项目克隆仓库修改后想要项目人接收你的代码,可发起pull request。但注意它只接收能被直接Merge的Pull Request // 不然项目负责人改冲突什么的都得累坏了啊

配置

apt-get install git 安装git

git init 把当前目录变为Git管理的本地仓库

git config --global user.email “[email protected]”

git config –global user.name “171767313”   // --global 表示对本电脑所有git生效

基本操作

git add test/  把工作区中的test添加到暂存区

git commit –m “explaination” 告诉git已有新修改的文件提交到仓库,并附加说明(恩,准确来说是扔到Objects那里去了

git status 当前仓库状态

git diff 查看working tree与index file的差别

git log 查看提交日志,包含commit ID, Author, Date.

git reset --hard HEAD^^^ 把暂存区的文件退回到前x个版本,其中x为^的数量,也可

git reset --hard commit_ID 此命令也可用于回复到新版本的文件

git reflog 查看所有分支的所有操作记录 ,包括commit和reset的操作

git checkout -- test.c 取消test.c的修改,退回到暂存区时候

git reset HEAD test.c 把暂存区里test.c的修改撤销,重新扔回工作区

git rm test.c 从版本库位置删除test.c

身份验证

接着说到一个验证的问题。恩,你和Github想相互验证对方的真实身份该怎么做的呢?这个和单纯的tell me who you are不同,就好像说我部长想在我电脑上推代码上他的Github那里,Github得验证他身份,不然要是那个是我手贱操作的,他就得哭了。Github则是用SSH Key来识别是不是你在用自己的电脑工作——恩所以我部长说干完活整理完自己想弄的资料,一定要删,不然会祸害到他= =

本地Git仓库和Github仓库是通过SSH加密的。以下则是廖雪峰博客上的内容:

1、  创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件(前者为私钥,后者公钥),如果已经有了,可以直接跳到下一步。如果没有,打开Shell,创建SSH Key

$ ssh-keygen –t rsa –C [email protected]

2、接着登录Github,打开”Account settings”, “SSH Keys”页面,点击”Add SSH Key”,填上任意Title,在Key文本框里粘贴”id_rsa.pub”文件的内容

分支问题

Github算是一个用服务器专门的为Git提供保存、管理代码的地方(恩…可以参考Pypi,个人觉得部分相似)。如果需要用Github来托管一个新项目的代码,则需要在上面创建一个新的仓库。据说还能自己局域网下搭一个玩,这个打算学服务器的时候再自己拿个硬件平台来玩玩吧,不扯这个了,况且一般情况下也用不到。

下面是在Github上建立远程库,也是廖雪峰博客上抄过来的内容 ——

Github右上角Create a new repo,填入Repository name ,一路默认OK~

目前,在GitHub上的这个learngit (他的example_name) 仓库还是空的,GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。

现在,我们根据GitHub的提示,在本地的learngit仓库下运行命令:

$ git remote add origin [email protected]:michaelliao/learngit.git

请千万注意,把上面的michaelliao替换成你自己的GitHub账户名,否则,你在本地关联的就是我的远程库,关联没有问题,但是你以后推送是推不上去的,因为你的SSH Key公钥不在我的账户列表中。

下一步,就可以把本地库的所有内容推送到远程库上:

$ git push -u origin master

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

$ git branch dev  // 创立分支dev
$ git checkout dev  // 切换至dev分支
$ git branch  // 查看所有分支。其中当前分支前会有 * 号
*dev
 master
$ git branch -d dev  // 删除dev分支

$ git merge dev  将dev分支的内容整合到当前分支上  // 如有更新内容上的冲突,会提醒且显示失败,需要手动解决冲动后再合并

$ git log --graph  可以看到合并分支图

附: git remote add <host_name>  <website> 添加远程主机。相应的也有

git remote rm <host_name> 删除远程主机

分支管理的问题 —— 恩我上学期参与一个微信公众号开发的时候就因为这个被说了一次,当时我没建立自己的分支直接推上master去了,影响了工作。罪有应得啊= =。下面是阮一峰博客上的:

git fetch <remote_host_name> <remote_branch_name> 将某主机某分支(此项不写则视为取全部分支)更新整理到本地

git pull <remote_host_name> <remote_branch_name>:<local_branch_name> 取回远程主机某个分支的更新,再与本地的指定分支合并。其中最后一项可不写,此时则视为远程分支与当前分支合并

如果远程主机删除了某个分支,默认情况下,git pull 不会在拉取远程分支的时候,删除对应的本地分支。这是为了防止,由于其他人操作了远程主机,导致git pull不知不觉删除了本地分支。

但是,你可以改变这个行为,加上参数 -p 就会在本地删除远程已经删除的分支。如$git pull –p

git push <remote_host_name> <local_branch_name>:<remote_branch_name>将本地分支的更新推送到远程主机

如果省略远程分支名,则表示将本地分支推送与之存在"追踪关系"的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。

没错,我当初就是直接写了master……明明自己的只是写出了框架,还有一些页面细节等着别人修改来着的= =啊我错了!

资料参考 (教程的真的去看他们的吧,我只是简单记录)

http://blog.chinaunix.net/uid-10415985-id-4112861.html undeador博客

http://www.ruanyifeng.com/blog/2014/06/git_remote.html 阮一峰的博客

http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 廖雪峰的git教程

时间: 2024-10-18 09:57:50

Git操作记录的相关文章

centos下升级git版本的操作记录

在使用git pull.git push.git clone的时候,或者在使用jenkins发版的时候,可能会报类似如下的错误: error: The requested URL returned error: 401 Unauthorized while accessing https://git.oschina.net/zemo/demo.git/info/refs fatal: HTTP request failed 这个一般是由于服务器本身自带的git版本过低造成的: [[email p

Git操作指令进阶

注意: 学习前请先配置好Git客户端 相关文章:Git客户端图文详解如何安装配置GitHub操作流程攻略 官方中文手册:http://git-scm.com/book/zh GIT 学习手册简介 本站为 Git 学习参考手册.目的是为学习与记忆 Git 使用中最重要.最普遍的命令提供快速翻阅. 这些命令以你可能需要的操作类型划分,并且将提供日常使用中需要的一些常用的命令以及参数. 本手册将从入门到精通指导大家. 首先,我们要从如何以 Git 的思维方式管理源代码开始. 如何以 GIT 的方式思考

Git操作(基础篇)

Git操作(基础篇) Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.Git的读音为/g?t/.Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理.Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件. Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上.怎么分布呢?最早,肯定只有一台机器有一个原始版本库,此后,别的机器可以"克隆"这个原始版

git使用记录(新手入门)

最近参与了公司的项目开发,最后要用git来把代码添加到远程库,但是没怎么接触过git,记录一下使用的流程 首先,当然是先下载git,这个略过不提,下载完之后,在你想要保存代码的目录下,用git init来初始化一个仓库 然后用git remote add origin https://xxx/xxx.git 来添加远程库 接着git clone https://xxx/xxx.git 把远程库原来的东西克隆到本地 把你写的代码放到克隆下来的库中 接着git add xxx 把修改的文件添加到本地

Git初学记录

1.什么是Git? Git 是 Linux 发明者 Linus 开发的一款新时代的版本控制系统,那什么是版本控制系统呢?举几个简单的例子: 熟悉编程的知道,我们在软件开发中源代码其实是最重要的,那么对源代码的管理变得异常重要: 比如为了防止代码的丢失,肯定本地机器与远程服务器都要存放一份,而且还需要有一套机制让本地可以跟远程同步: 又比如我们经常是好几个人做同一个项目,都要对一份代码做更改,这个时候需要大家互不影响,又需要各自可以同步别人的代码: 又比如我们开发的时候免不了有bug,有时候刚发布

Gitlab备份和恢复操作记录

前面已经介绍了Gitlab环境部署记录,这里简单说下Gitlab的备份和恢复操作记录: 1)Gitlab的备份目录路径设置 [[email protected] ~]# vim /etc/gitlab/gitlab.rb gitlab_rails['backup_path'] = "/data/gitlab/backups" [[email protected] ~]# mkdir -p /data/gitlab/backups [[email protected] ~]# chown

使用Gitkraken进行其他Git操作

使用Gitkraken进行其他Git操作 查看某次 commit 的文件改动 使用 Gitkraken 能非常方便的看到任意一次的 commit 对项目文件的改动. 具体操作是:在树状分支图上单击某个 commit 记录,在右侧会显示出此次 commit 信息.文件的改动情况(分为红.绿.黄三种标志,分别代表删除文件.添加文件.修改文件). 当单击某个改动的文件时,会展示出具体的变更情况,可选择 "Diff View" 视图查看与上一次 commit 的差别,或 "File

常用的Git操作

今天主要记录一下平常工作当中使用的git操作: 1.git的安装这里省略: 2.git的操作指令:        删除某一个文件:   rm -rf node,然后按下tab 查看分支: git branch -a 合并分支: git checkout -b 迭代  origin/迭代:    然后在切换分支: git branch -a: 从版本库拉取代码: git clone git地址 查看代码修改的内容: git status -s 查看修改文件的修改的详细信息:  git diff 文

Git操作手册

$ git config --global user.name "Your Name" $ git config --global user.email "[email protected]" 注意git config命令的--global参数,用了这个参数,表示这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址. pwd命令用于显示当前目录 git init 把这个目录变成Git可以管理的仓库 如果没有看到.git目录