ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

实际开发中常用的Git操作

2021-06-13 22:58:22  阅读:155  来源: 互联网

标签:常用 git 提交 -- review Git 开发 commit


一,前期基础知识储备

1)集中式版本控制 — SVN

所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改。

所有的版本数据都存在服务器上,用户的本地只有自己以前所同步的版本,如果不连网的话,用户就看不到历史版本,也无法切换版本验证问题,或在不同分支工作。而且,所有数据都保存在单一的服务器上,有很大的风险这个服务器会损坏,这样就会丢失所有的数据,当然可以定期备份。

2)分布式版本控制 — Git

每个人都拥有全部的代码!

所有版本信息仓库全部同步到本地的每个用户,这样就可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时push到相应的服务器或其他用户那里。由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用。

不会因为服务器损坏或者网络问题,造成不能工作的情况!

Git是目前世界上最先进的分布式版本控制系统。

软件下载:git官网https://git-scm.com/

启动Git:文件夹内右键

Git Bash:Unix与Linux风格的命令行,使用最多,推荐最多;

Git GUI:图形界面的Git,不建议初学者使用,尽量先熟悉常用命令。

3)常用的Linux命令

1)、cd : 改变目录。

2)、cd . . 回退到上一个目录,直接cd进入默认目录

3)、pwd : 显示当前所在的目录路径。

4)、ls(ll):  都是列出当前目录中的所有文件,只不过ll(两个ll)列出的内容更为详细。

5)、touch : 新建一个文件 如 touch index.js 就会在当前目录下新建一个index.js文件。

6)、rm:  删除一个文件, rm index.js 就会把index.js文件删除。

7)、mkdir:  新建一个目录,就是新建一个文件夹。

8)、rm -r :  删除一个文件夹, rm -r src 删除src目录

rm -rf / 切勿在Linux中尝试!删除电脑中全部文件!

9)、mv 移动文件, mv index.html src index.html 是我们要移动的文件, src 是目标文件夹,当然, 这样写,必须保证文件和目标文件夹在同一目录下。

10)、reset 重新初始化终端/清屏。

11)、clear 清屏。

12)、history 查看命令历史。

13)、help 帮助。

14)、exit 退出。

15)、#表示注释

4)工作区域

Git本地有三个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)。如果在加上远程的git仓库(Remote Directory)就可以分为四个工作区域。文件在这四个区域之间的转换关系如下:

  • Workspace:工作区,就是你平时存放项目代码的地方;
  • Index / Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息;
  • Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本;
  • Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换。

日常使用要记住上图6个命令 + review操作:

  • git clone - 克隆
  • git checkout - 检出
  • git add - 增加
  • git commit - 提交
  • git push - 推送
  • git pull --rebase - 拉取
  • git review branch_name - review

团队内会有一位Code reviewer,负责代码管理的,团队成员一般执行完git commit之后,不会自己手动执行git push,而是执行git review,而后有reviewer检验完代码后,进行git push。

4.1 本地仓库搭建

# 在当前目录新建一个Git代码库
$ git init

执行后可以看到,仅仅在项目目录多出了一个.git目录,关于版本等的所有信息都在这个目录里面。

4.2 克隆远程仓库

# 克隆一个项目和它的整个代码历史(版本信息)
$ git clone [url]  # https://gitee.com/kuangstudy/openclass.git

克隆远程目录,将远程服务器上的仓库完全克隆一份至本地!

二,上命令

仓库

# 在当前目录新建一个Git代码库
$ git init

# 下载一个项目和它的整个代码历史
$ git clone [url]

查看信息

# 显示当前分支的版本历史
$ git log

# 显示commit历史,以及每次commit发生变更的文件
$ git log --stat

# 显示有变更的文件
$ git status

增加/删除文件

# 添加指定文件到暂存区
$ git add [file1] [file2] ...

# 添加指定目录到暂存区,包括子目录
$ git add [dir]

# 添加当前目录的所有文件到暂存区
$ git add .

代码提交

# 提交暂存区到仓库区
$ git commit -m [message]

# 使用一次新的commit,替代上一次提交
# 如果代码没有任何新变化,则用来改写上一次commit的提交信息
$ git commit --amend -m [message]

# 重做上一次commit,并包括指定文件的新变化
$ git commit --amend [file1] [file2] ...

# 修改的是更前面commit记录的注释信息,以2次为例
$ git rebase -i HEAD~2

# 提交至gerrit,进行代码review
$ git review [branchname] && git review -R -y [branchname]

① 注意 git commit --amend -m[message]

可以快速修改上一次的commit信息,但是只能使用一次,如果需要再次修改,则要执行 git commit --amend,进入Vim编辑界面:

英文输入"i",进入编辑模式,然后修改提交记录;

修改完之后,按Esc,接着输入":wq",然后就保存退出了。

② 《Git 修改已提交的commit注释

1)输入:git rebase -i HEAD~2
最后的数字2指的是显示到倒数第几次 比如这个输入的2就会显示倒数的两次注释;此时会进入VIM编辑界面,如下图所示。
2)你想修改哪条注释 就把哪条注释前面的pick换成edit。方法就是上面说的编辑方式:i---编辑,把pick换成edit---Esc---:wq. (这一步不是直接修改提交信息,而是标记需要修改的信息)

3)然后输入下面的修改命令,重新进入VIM编辑界面,此时就可以修改上面标记过的信息:
git commit --amend ,然后i, 编辑信息,编辑完Esc+:wq保存退出。

4)修改注释,保存并退出后,输入:
git rebase --continue

5)至此,就修改完毕了,然后就重新执行一次review
git review xpdev

③ 注意 git review

—— 提交commit之后,需要review,只有review之后的代码才能被merge。
一次commit记录,生成一个change id,可以被review一次。

若是有多个提交记录,则需执行git review -R -y branchname

撤销

# 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变
$ git reset [commitID]

暂时将未提交的变化移除,稍后再移入
$ git stash
$ git stash pop

有时commit之后,发现需要撤销,就可以执行git reset commitid,回到某次历史提交。

在一个分支内修改了文件,此时需要切换到另一分支时,就可以先执行git stash,保存起来。

当然也可以使用Android Studio自带的操作,效果是一样的:

远程同步

# 显示所有远程仓库
$ git remote -v

# 显示某个远程仓库的信息
$ git remote show [remote]

# 拉取远程代码
$  git pull --rebase

git pull = git fetch + git merge FETCH_HEAD 
git pull --rebase =  git fetch + git rebase FETCH_HEAD 

分支

# 列出所有本地分支
$ git branch

# 列出所有远程分支
$ git branch -r

# 列出所有本地分支和远程分支
$ git branch -a

# 切换到指定分支,并更新工作区
$ git checkout [branch-name]

# 删除分支
$ git branch -d [branch-name]

# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]

删除本地分支:切换到其他分支,然后AS中选择Delete就行。

删除远程分支:git push origin --delete dev20181018

标签

# 列出所有tag
$ git tag

# 查看tag信息
$ git show [tag]

其他

# 打开历史记录的图形化查看器
$ gitk

在安装 Git 的同时,你也装好了它提供的可视化工具,gitk 和 git-gui。
gitk 是一个历史记录的图形化查看器,你可以把它当作是基于 git log 和 git grep 命令的一个强大的图形操作界面,当你需要查找过去发生的某次记录,或是可视化查看项目历史的时候,你将会用到这个工具。

每个点代表一次提交,线代表父子关系,而彩色的方块则用来标示一个个引用。 黄点表示 HEAD,红点表示尚未提交的本地变动。


三,Sourcetree操作

Sourcetree是一个用于Windows和Mac的免费Git客户端。
Sourcetree简化了如何与Git存储库进行交互,这样就可以集中精力编写代码。

官网下载地址:Sourcetree | Free Git GUI for Mac and Windows 

上面所有的命令行都可以通过客户端的形式进行操作,很直观。

上面的2个修改commit信息的git命令行可以修改commit的注释信息,但是无法修改提交的文件。比如说要是一次commit之后,然后git review时发现有一些代码细节需要优化,一点点修改,不值得再进行一次commit,所以就可以利用sourcetree的这个功能,把这一点代码完善之后,然后选择“修改最后一次提交

然后再接下来的弹窗内选择使用上一次提交记录,这样就会把该次提交合并到上次修改当中,注意这里的是“合并”策略,而不是“覆盖”策略

这个操作是很有价值的。

 

参考:

廖雪峰 | Git教程

W3Cschool | Git教程

菜鸟教程 | Git教程

Git 大全

 

标签:常用,git,提交,--,review,Git,开发,commit
来源: https://blog.csdn.net/weixin_41101173/article/details/117885663

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有