代码管理的 Git:非常常用命令

栏目: 编程工具 · 发布时间: 5年前

内容简介:这里不说很多git是什么之类的,只说工作中会使用到的场景。服务端使用 git init --bare sample.git

这里不说很多git是什么之类的,只说工作中会使用到的场景。

代码管理的 Git:非常常用命令

创建新项目

服务器端创建项目

服务端使用 git init --bare sample.git

客户端就可以通过git clone git@127.0.0.1:sample.git 克隆仓库

客户端创建项目

项目的创建也可以是在客户端创建(前提是当前用户有创建权限)

假设需要将本地sample文件夹创建为项目仓库,进入sample文件夹,执行

## 初始化
git init  
## 添加远程地址
git remote add origin git@127.0.0.1:sample.git  

## 添加文件
git add README.md 

## 添加第一个commit	
git commit -m 'init' 

## push到远程
#第一次push,使用push -u origin master

git push -u origin master 

项目拉取

普通拉取

一般项目拉取使用git clone git@127.0.0.1:sample.git

shallow 拉取

如果项目比较大拉取过程可能出现 Out of memory, malloc failed 这个时候就需要一点一点的拉取项目了。

git clone depth=1 git@127.0.0.1:sample.git

使用depth=1限制记录数目。可以大一点,但是不能太大,否则还是会出现上述错误。

使用depth的方式拉取下来的项目只有有限个记录,而且不包含其他分支信息。

对于初始项目如下图

代码管理的 Git:非常常用命令

使用depth=1克隆项目之后

代码管理的 Git:非常常用命令

可以发现,这样clone之后的历史记录只有一条,而且没有其他分支。那么当depth加大的时候呢?除了clone,fetch,pull都可以使用depth参数。

这里把depth设置成5,获取到分支dev创建之前的记录,看dev是否会出来。

代码管理的 Git:非常常用命令

即使depth等于5,也依然没有其他分支(branch -a 都不会显示)。

代码管理的 Git:非常常用命令

也可以通过 git clone --depth 1 --no-single-branch git@127.0.0.1/sample.git 直接获取多个分支

shallow 拉取如何获取其他分支呢?

1、指定远程分支拉取

git remote set-branches 'dev'
git fetch --depth=1 origin dev

代码管理的 Git:非常常用命令

上面这样其实是设置了远程分支名称。但是这这样会破坏master 和origin/master的关联。

使用 branch -vv 可以看到本地分支和远程分支的关联关系。

如果本地分支没有和远程分支关联,可以使 git branch --set-upstream-to=origin/dev 关联远程分支。如果提示

fatal: Cannot setup tracking information; starting point 'origin/dev' is not a branch.

则说明使用的是 git remote set-branches 'dev' 覆盖了远程分支信息。

可以使用 git remote set-branches --add origin dev 重新添加远程分支信息

所以获取远程分支 应该使用的方式

git remote set-branches --add origin dev
git fetch --depth=1 origin dev

2、使用git fetch --unshallow ,获取所有没有检下来的内容。只有在剩余内容比较少的时候才能使用,否则还会出现 Out of memory, malloc failed 错误

代码管理的 Git:非常常用命令

两种方案可以配合使用。先使用depth一点一点的把项目历史记录拉取下来。待剩余历史记录不多的时候再使用 git fetch --unshallow 拉取

提交代码

## 添加变更文件,
## --all,所有的;
## 使用-p参数手动添加变更内容;
## 或指定文件添加单个文件

git add --all

## 添加commit说明
git commit -m 'commit message'

## 更新远程代码
git pull 

## 将更新内容推送到服务器
## 这样其他协作者就能看到了
git push

git add -p 会以区块显示文件变更,开发者自己决定是否把变更内容添加到本次提交中。

代码管理的 Git:非常常用命令

如果觉得生成的区块粒度太大了,想要更细一些的,可以在git add -p之后的选项中输入 s 会将该区块更细的划分,从而达到添加行变更的目的。

代码管理的 Git:非常常用命令

更新代码

1、git pull,git pull 执行的内容包括拉取远程的更新内容,同时将远程更新内容与本地文件进行合并。合并之后,本地工作区的内容也会立即发生变化。

2、git fetch,执行内容是拉取远程更新内容。此时本地工作区间文件还未改变。然后再自己执行git merge 手动合并更新

合并冲突

merge 或者pull之后,如果协作人员直接没有冲突地方,会直接合并。如果有冲突,需要合并才能push。

冲突文件,git会以以下的形式标记冲突双方的修改。其中 <<<HEAD...=== 内容是自己的修改, ==..>>> 内容是他人的修改。

<<<<<<< HEAD
qww
=======
555

>>>>>>> bb2f6e59

当文件的这些标记符被删除之后,命令行认为该文件的冲突以及被处理了。

合并除了手动合并文件之外,还可以在合并之前指定保存哪一放的修改

以他人修改为准

git merge --strategy-option theirs

以本地修改为准

git merge --strategy-option ours

pull 的时候指定保留他人

git pull -X theirs

基本上日常开发常用的是这些,为避免篇幅太长,各种需求变更的场景放在下一篇。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

万万没想到

万万没想到

万维钢(同人于野) / 电子工业出版社 / 2014-10-1 / 39.80元

本书精选了万维钢老师的文章和书评,以“用理工科思维理解世界”为导向。作者常用有趣的实验、数据来解读感性的事物,其理工科思维涉及行为经济学、认知心理学、社会学、统计学、物理等许多学科,以前沿的科学视角解读生活,为人们提供了认知的新方法。读完本书相当于精读了十几本经过筛选 、再创作及通俗化处理的巨著,不仅有趣还十分有营养。一起来看看 《万万没想到》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

SHA 加密
SHA 加密

SHA 加密工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具