使用GitLib

git 工作区域
git的工作区域.png

本地开发完之后通过add命令会把本地工作区的代码添加到暂存区(stage),然后commit之后会将stage中的代码提交到本地分支的版本库中,之后执行push会推到远程分支中。

分支管理策略

master应该是非常稳定的,也就是近用来发布的新版本,平时不在上面开发,所有的开发应该在dev分支上,测试验收完成,再把dev合并到master发布版本。

Bug分支

有时候在开发过程中需要紧急修复一个bug,想要pull最新的代码,但是又不想将正在开发到一半的代码提交,那么可以先暂存开发的代码,使其返回到自己上一个commit,改完bug之后再stash pop,继续原来的工作。
git stash 暂存当前代码
git stash pop 取出暂存的代码
git stash list 查看现有的储藏

feature分支(功能分支)

如果有多人协作的话,需要开出多个feature分支,各自开发完成之后再合并。

打开gitlib然后新建一个项目取好名字,然后按照底下给的提示在cmd中create 仓库。注意在更新项目时要先pull,然后提交更新然后push
git提交文件的顺序:

git add . // add全部文件
git add a b c d e // 文件之间添加空格表示依次添加文件
git commit -m "" 提交代码到本地
git pull 拉去代码
git push push代码
git status 查看更改的文件

拉取远程分支并创建本地分支

git checkout -b 本地分支名x origin/远程分支名x(使用该方式会在本地新建分支x,并自动切换到该本地分支x。)
git fetch origin 远程分支名x:本地分支名x(使用该方式会在本地新建分支x,但是不会自动切换到该本地分支x,需要手动checkout。)

版本回退

git 将本地的状态回退到和远程一样
git reset --hard origin/master

查看分支

查看本地分支:git branch 查看本地以及远程分支:git branch -a

切换分支

切换分支:git checkout "分支名"

创建分支

从已有的分支创建新分支(如从master分支),创建一个dev分支:
git checkout -b dev,如果需要从某一个分支切出另一个分支,需要先切换到该分支下,然后在该分支中执行该命令,则可以从该分支中创建出另一个分支。

远程与本地关联

远程没有关联local_branch分支,并且本地已经切换到remote_branch分支,要关连本地和远程分支:
git push origin local_branch:remote_branch
切换分支之前需要将当前分支修改的内容全部提交完,如果未提交完成则无法提交。

标绿色表示当前分支


屏幕快照 2017-12-12 上午9.09.39.png

在分支下pull或者push
git push origin develop (develop为分支名)
或者git push origin develop(本地分支):
git pull origin develop(远程分支):devleop(本地分支)

下面的命令执行前提是在gitLab上有了地址
Git global setup
git config --global user.name "魏昌洲"
git config --global user.email "wcz345583696@163.com"

Create a new repository
git clone http://10.116.15.196:9999/wcz123/TestProject.git
cd TestProject
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master

Existing folder
cd existing_folder
git init
git remote add origin http://10.116.15.196:9999/wcz123/TestProject.git
git add .
git commit -m "Initial commit"
git push -u origin master

Existing Git repository
cd existing_repo
git remote add origin http://10.116.15.196:9999/wcz123/TestProject.git
git push -u origin --all
git push -u origin --tags

如何将本地的master代码关联到分支上:直接从分支上拉取代码。
例如直接在master上拉取下来的代码上执行git pull origin develop。

关于.gitignore

如果项目中没有.gitignore文件,可以手动创建一个。
有时候.gitignore不起作用,原因就是因为.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:
git rm -r --cached .
git add .
git commit -m “gitupdate gitignore file”
有时候执行这样的操作之后,在add时有的文件会的追踪会丢失,需要进入该文件目录中将.git文件删除之后再add。
如果要在.gitignore中添加某一个需要忽略的文件可以针对该文件做忽略 eg:

屏幕快照 2018-01-24 下午5.51.23.png

如果.gitignore写的有问题,需要找出来是哪里写错了,可以用git check-ignore命令检查。

如何在新建项目时拉取到develop上的代码:
先git clone 代码,这时候本地代码是master上的,然后执行git checkout -b 本地分支名x origin/远程分支名x 拉取分支代码并在本地创建分支。可参考http://blog.csdn.net/tterminator/article/details/52225720

git diff

git diff 文件 查看文件修改,查看文件修改了哪些地方,cd到该文件下,然后执行该命令。图片中红色的地方是没修改之前的,绿色的是修改了的。


屏幕快照 2018-01-24 下午5.17.45.png

git fetch

git fetch 更新远程分支,比如其他人创建了一个远程分支,你这边没更新到,可以用git fetch命令更新一下。
git fetch <远程主机名>某个远程主机的更新,全部取回本地。
git fetch <远程主机名><分支名>取回所有分支(branch)的更新。
git fetch -p 远程有删除的分支,通过该命令可以更新

git merge

git merge命令用于合并指定分支到当前分支。例如将dev分支合并到master分支上:
1、切换到master分支下
2、执行git merge dev命令将dev分支合并到master分支。
3、将远程的分支合并到本地:git merge origin/dev(远程的分支)

4、git merge dev1 合并本地分支dev1到当前分支

删除分支

git push origin :dev (origin后面有空格) 删除远程分支。或者git push origin --delete 分支名
git branch -d <BranchName> 在本地删除远程已经删除的分支。
git branch -D <BranchName> 删除本地分支。
在删除本地分支之前,当前分支不能为该分支。

git log

git log --graph --pretty=oneline --abbrev-commit
查看分支的合并情况,包括分支合并图、一行显示、提交校验码缩略显示。

版本回退

git reset --hard HEAD^
回退到上一个版本。
同理,回退到上上个版本为:HEAD^ ^, 回退到上100个版本为:HEAD-100,貌似波浪号 ~ 也可以,变成倒数第101个。
git checkout . 类似git reset的作用,放弃对文件的修改

git tag

版本的发布会一直持续,如果上一个版本出了问题,我们需要版本追溯时可以通过git tag直接定位到出问题的版本。通过这个命令可以避免不断的开出分支来保留上一个版本。
git tag 查看目前有哪些tag。
git show tag-name 查看某一个tag下的具体信息。
git checkout tag-name 将工程定位到相应的tag处。
git tag -a v1.0.0 -m “1.0.0版本” 为当前版本添加附注。
git push origin v1.0.0单独提交本次tag。
git push --tags 提交所有tags。
git tag -d v1.0.0 删除标签。
git push origin --delete tag <tagname> 删除远端tag。

在gitlab下,一般只有项目创建者才有权限合并和提交代码到master上,如果要给开发者提供开发master分支的权限,需要在项目面板Settings ->Repository中将项目的开发权限放开。
[图片上传中...(屏幕快照 2018-02-24 上午10.46.48.png-dc3cbf-1519440588579-0)]

查看历史提交明细:

1、gitLab -> Repository -> Commits然后查看提交过的文件的详细更改


屏幕快照 2018-05-02 下午1.12.08.png

2、或者可以cd到某一个文件下,通过git log filename来看这个文件以往的提价记录,每个提交记录对应着一个hash值,然后执行git show hashValue来查看具体的内容。

git reflog 查看各分支的提交记录

这个命令记录了所有的提交记录,HEAD前面的值是关键,如果代码合并或者出现了别的错误,需要恢复到某一个提交的点,可以先用这个命令查看所有的提交记录,找到需要的HEAD的值,然后执行git reset 28d447f –hard命令,中间的28d447f替换成自己查找出来的值。
屏幕快照 2018-05-09 下午3.41.22.png

git命令行记住用户名和密码

git config --global credential.helper store
先输入该命令,然后再执行其他git命令时输入用户名和密码就会记住该用户名和密码了。

记录一次遇到的git问题:

不要在tag上写代码,tag不是分支,记录的只是代码某一个状态下的所有数据,在tag上写的代码只能进行本地提交,没有办法push。如果不小心在tag上写了代码,需要做的是先把代码提交到本地,然后切换到打tag的分支,这时候会出现如下提示:
屏幕快照 2018-05-09 下午3.57.19.png
这句话的意思是需要你切一个新的分支,然后分支后面带的一长串值也要加上,这样才能将写在tag上的代码移动到新

强制将本地推到远程的分支
如果本地的版本是对的,想用本地的分支替换掉远程的分支,可以先切到该本地分支,然后使用命令 :git push -u origin master -f ,其中“master”是目标远程分支。

远程的git地址发生变更怎么修改?
在项目文件夹中找到.git文件,然后打开里面的config文件,然后修改url参数。

附上廖雪峰的git讲解:
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,835评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,598评论 1 295
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,569评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,159评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,533评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,710评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,923评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,674评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,421评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,622评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,115评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,428评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,114评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,097评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,875评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,753评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,649评论 2 271

推荐阅读更多精彩内容

  • git常用命令 GIT常用命令备忘:http://stormzhang.com/git/2014/01/27/gi...
    新篇章阅读 8,384评论 1 26
  • 本片内容转自CSDN http://blog.csdn.net/ithomer/article/details/7...
    五娃儿阅读 4,832评论 2 88
  • 一个人越是善良,待人的底线应该越高一些。这样才能避免纵容他人,也能保护自己。如果你的生活只是对世界察言观色,然后满...
    蜡笔滴爱十年阅读 671评论 0 0
  • 先有什刹海,后有北京城。什刹海又称十汉海或十版海,位于帝都西城区西北部,由前海、后海和西海三个水域组成,俗称“后三...
    微澜09阅读 933评论 0 0
  • Java是强类型语言,对于每一种数据都定义了具体的数据类型,在内存中分配了不同大小的内存空间。 1.整型 整数默认...
    Olivia_SHEN阅读 252评论 0 0