Git的学习与常用操作

·Git的工作原理关系图:

一个文件从修改到提交的过程:

修改 ---〉工作区中进行,此时工作区的状态比暂存区,版本库区要新

添加 ---〉修改的文件被添到暂存区,工作区与暂存区的文件状态一样,都要比版本库区的状态要新

提交 ---〉暂存区中的文件被写入版本库区,此时工作区,暂存区,工作区中的文件状态时一样的

注意:工作区,暂存区都是临时存放点,不安全

版本库区是安全存放点,所有文件的版本都是控制在版本库区中的

说明:从远程git服务器克隆到本地的git库,有一个隐藏的.git目录,这个目录就是暂存区及库区的位置,千万不要删除了,除了.git目录之外的区域都是工作区。

·使用Git命令上传下载代码

1、gitconfig 配置

配置gerrit账号及邮箱

gitconfig --global user.name gerrit_account

gitconfig --global user.email 与账号绑定的邮箱

由于这里是全局配置,只需要在本地配置一次就ok了

2、gitclone 下载代码

$cd working-tree

$gitclone ssh://[email protected][代码服务器ip]:29148/projectname

注意:projectname 项目库的名称

            gerrit_account 用个人的gerrit账号替换

            IP:用gerrit/git的iP替换

3、从gerrit服务器拷贝钩子脚本到本地库

$scp –P 29418 -p [email protected][代码服务器ip]:/hooks/commit-msgworking-tree/projectname/.git/hooks/

这个经常是在push代码失败的时候出现要求下载的,执行该命名之后,回退push操作,再次push就能成功。

4、本地修改提交及推送到gerrit web页面

 1) 确定修改哪个分支的代码,建立本地分支用于追踪远程分支

$ cd working-tree/projectname

$git branch –r

然后确定修改哪个分支的内容,比如修改主线master的代码,

就要在本地建立master分支,用于追踪远程版本库的分支。

$ git checkoutmaster (建立本地master分支,追踪远程版本库的master分支,并且切换到本地master分支)

2)修改文件内容,或者新增文件

$gitstatus (查看状态,会有提示下一步应该怎么做)

$git add 文件名称

$gitstatus

$gitcommit –m “CR编号 内容简单描述”

3)如果是删除或者重命名已受控文件或目录,即

$gitrm 文件/目录 或者 $git mv 文件1/目录1  文件2/目录2

$gitstatus (查看状态,发现文件已从工作区及暂存区删除,或者重命名后的文件已在工作区级暂存区,下一步只需提交即可)

$gitcommit –m “CR编号 内容简单描述”

4)推送本地分支的修改到gerrit服务器页面

git push origin branchname:refs/for/branchname

brachname
就是当前代码库当前本地分支,可以通过git branch 命令查看

5)代码提交者登录到gerrit页面,在走查单中添加走查人员名单

·git回退操作

1:在本地项目库中,在工作区修改或删除已受控的文件,后悔了,想要会退到之前的状态(工作区的文件回到修改之前的状态,暂存区,库区不受影响)

git  checkout  --  filename 回退某个文件

git checkout  --    .    回退当前目录所有修改

2:在本地项目库中,修改或添加或删除了某个文件之后,执行了git add的动作之后,后悔了,想取消add的动作(工作区不受影响,库区不变,暂存区回到add之前的状态)

git reset HEAD  filename

git reset HEAD .

3:在本地项目库中,修改或添加或删除了某个文件之后,执行git  add ,git commit的动作之后,想取消git commit的动作,想重新commit一次(工作区,暂存区不变,库区回到commit之前的状态)

git  reset --soft  HEAD^

4:在本地项目库中,修改或添加或删除了某个文件之后,执行git  add ,git commit的动作之后,想取消add及commit的动作,但是保留工作区的修改:(暂存区,库区回到之前的状态)

git  reset  --mixed HEAD^

5:在本地项目库中,修改或添加或删除了某个文件之后,执行git  add ,git commit的动作之后,想取消add及commit的动作,并且抛弃工作区的修改:

git  reset  --hard HEAD^

·说明:如果发现第五类的回退操作有误,想回到之前的状态

·# git relog

·# 2522695 [email protected]{0}: reset: moving toHEAD^

·# git reset   --hard [email protected]{0}

6: 在本地项目库中,修改或添加或删除了某个文件之后,执行git  add ,git commit的动作之后,并且已经推送到远程库,如果回退远程库的此次合入呢?

在本地库通过git log找到此次提交的commit-ID(40位哈希值)

git  revert -n  commit-ID

git  commit –m “xxxxx”

git  push origin branchname:refs/for/branchname

·git冲突解决

(1)执行git fetch origin

git rebase origin/master,(请用实际的分支名称替换master)

我们看到了冲突文件......

确认冲突存在后,执行git mergetool即可启动GUI进行代码的融合:中间三个区域分别对应着LOCAL BASE REMOTE三个版本(其中,BASE为共同的基版本,LOCAL为在你合入之前已经合入的版本,REMOTE为我们合入时提示冲突的版本),最下面的区域即为解决冲突后的最终版本,保存退出。

解决好冲突文件后,将.orig文件进行删除,执行git rebase --continue命令,注意:此处mergetool已经自动为我们执行了git add
命令,无需再执行该命令。

最后进行推送,在原来的走出单中会多出一个patch包,如下所示,再次审核,通过后直接合入。

(2)针对冲突文件比较少的情况

  在本地库的操作方法:假设本地库的本地分支是master分支,如果是其它分支,下面的master就要用对应的分支名称替换

cd  test

 git fetch origin

 git rebase origin/master

·git status介绍

通过git status命令可以快速定位本地git库的状态,git status命令输出的打印信息可以指引你下一步该如何操作。

·git diff的使用

diff 不停的比对工作区、暂存区、版本库区的变化

git   diff   比对工作区与暂存区的变化

git   diff  - -cached  比对暂存区与库区的变化

git   diff    HEAD   比对库区与工作区的变化

·git log介绍

‘git log‘是git中最常用的一个命令,执行之后,会显示该项目的提交历史。如果命令不加任何参数,那么就会显示目前所在分枝上,从最后一次提交开始,按时间顺序依次向前排列的所有提交历史记录。

git日志默认输出的提交历史的内容格式:

*提交的校验和

*作者信息(作者名和email地址)

*提交日期

*提交信息

多数情况下,这样输出还是比较完美的。然而,有时候你只是想看到某个分枝上的最后几条提交信息,或者某些感兴趣的数据,只要在‘git log‘命令后面加上相应的参数,它就可以做更多有意义的事情。

·gittag介绍

如何打标签:

1、在这里只介绍常用的打标签的方法:

git tag -m “标签日志” tagnamecommit-Id

具体操作:

 $cd working-tree/projectname

$git branch

*master

对master分支打标签

$git log

 查找版本号commit-Id

$gittag –m “标签日志”  tagname commit-Id

$gitpush --tags #推送本地标签到远程,通常需要管理员在gerrit的项目库配置推送权限才可以

2、如何查看标签

$gittag –l

列出所有的表情名称

$gitshow tagname

显示标签的详细信息

$gitcheckout tagname

获取标签的代码

3、如何删除标签

$gittag –d tagname

 删除本地库的标签

$gitpush origin  :tagname

 删除远程库对应的标签

时间: 2024-10-12 08:21:47

Git的学习与常用操作的相关文章

git工作中的常用操作

上班开始,打开电脑,git pull:拉取git上最新的代码: 编辑代码,准备提交时,git stash:将自己编辑的代码暂存起来,防止git pull时与库中的代码起冲突,否则自己的代码就白敲了: 然后,git pull:拉取一下代码,与库中代码,做到同步,有冲突则解决冲突,如果省了这一步,别人有提交的代码,没有更新,自己提交就会报错,再走这一步,就会把别人的代码拉取出来,然后一起提交,就相当于你提交了自己的代码,也提交了别人的代码:还有,有时这样会使库中代码乱掉,别人的心血也会丢失,你就是罪

【软件构造】(转)Git详解、常用操作与版本图

版本控制与Git 转自:http://www.cnblogs.com/angeldevil/p/3238470.html 版本控制 版本控制是什么已不用在说了,就是记录我们对文件.目录或工程等的修改历史,方便查看更改历史,备份以便恢复以前的版本,多人协作... 一.原始版本控制 最原始的版本控制是纯手工的版本控制:修改文件,保存文件副本.有时候偷懒省事,保存副本时命名比较随意,时间长了就不知道哪个是新的,哪个是老的了,即使知道新旧,可能也不知道每个版本是什么内容,相对上一版作了什么修改了,当几个

简单的git入门介绍及常用操作

集中式版本控制系统采用中央服务器上存储的所有文件和实现团队协作.但是CVCS主要缺点是中央服务器的单点故障,即故障.不幸的是,如果中央服务器宕机一小时,然后在该时段没有人可以合作.即使在最坏的情况下,如果中央服务器的磁盘被损坏,并没有采取适当的备份,那么将失去整个项目的历史. DVCS客户不仅检出的最新快照目录,但他们也完全反映资源库.如果SEVER停机,然后从任何客户端库可以复制回服务器,以恢复它.每个结账是完整的版本库备份. Git不会依赖中央服务器,这就是为什么可以执行许多操作,当处于脱机

Git(进击学习:远程仓库操作)-V3.0

1.查看当前的远程仓库:git remote或git remote -v 2.添加远程仓库:git remote add [shortname] [url] git remote add pb git//github.com/pa/tic.git 现在可以用字符串 pb 指代对应的仓库地址了 3.查看远程仓库信息:git remote show [remote-name] git remote show origin 4.推送数据到远程仓库:git push [remote-name] [bra

Django学习--ORM常用操作

以下操作在cmd中进行 一.增加 create 和 save方法 实例: 1.增加一条作者记录 尝试 使用create添加: 2.增加一条出版社记录 尝试使用save()方法添加: 3.增加一条书籍记录 注:objects:model默认管理器.create是这个管理器中的方法 save方法是model对象的方法 插入主外键关系时,可以用对象的方式,也可以直接以关联id的方式插入 插入多对多关系时,要分步操作 二.修改 update和save方法 实例: 1.修改id=1的作者的名字为叶良辰 2

一图学完GIT常用操作

git是目前最广泛使用的版本控制软件.虽然git功能齐全,完全掌握需要花费一番功夫,然而,对于普通的开发者而言,常用的操作及其有限,而不常用的操作,即使学习了,也会很快忘记.因此,我个人的观点是我们仅仅需要掌握自己常用的操作即可.下图是我对git常用操作的一个总结,现公布出来,以飨大家.另推荐一本git学习极好的书籍<git pro>:https://vdisk.weibo.com/s/ADfpX8eK88Km. 原文地址:https://www.cnblogs.com/doctor-li/p

git bash 常用操作文件命令

git bash常用操作文件命令 在Windows下使用Git Bash,用的是Linux命令,常用几个文件操作命令如下: Windows命令 Linux 命令 意义 Windows命令 Linux 命令 意义 cd e:\xxx cd /e/xxx 切换到xxx目录 cd pwd 显示当前目录路径 dir ls 列出当前目录内容 copy nul xxx.txt touch xxx.txt 生成名为xxx.txt的空文件 del xxx.txt rm xxx.txt 删除xxx.txt文件 m

【Git使用详解】Egit的常用操作详解

常用操作 操作 说明 Fetch 从远程获取最新版本到本地,不会自动merge Merge 可以把一个分支标签或某个commit的修改合并现在的分支上 Pull 从远程获取最新版本并merge到本地相当于fetch+merge Push 将本地分支的更新,推送到远程主机 Merge tool 当你的代码产生了冲突可以通过此工具快速的对比 Switch to 将当前分支切换到其它分支或标签 Commit 将更改提交到本地库中 Rebase 可以把在一个分支里提交的改变移到另一个分支里重放一遍 Re

git 常用操作集锦

创建仓库 新建普通仓库: [email protected]:~/workspace/git$ git init Reinitialized existing Git repository in /home/jxdong/workspace/git/.git/ 新建 bare 仓库: [email protected]:~/workspace/git.git$ git init --bare Initialized empty Git repository in /home/jxdong/wor