Learning Git~

Step 1:自报家门

git config --global user.name “wjh”

git config --global user.email “email@example.com

注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

Step 2:创建版本库

mkdir learngit 在当前目录下 创建learngit文件夹

pwd 显示当前目录

git init 将当前目录变成git可以管理的仓库

1.git add readme.txt 将readme.txt添加到(暂存区)

2.git commit  -m “wrote a readme file” –m 后面表示对这次修改的解释   将暂存区的所有内容提交到当前分支

git status 观察仓库当前状态

git diff readme.txt 可以查看修改内容,若是commit之后,便看不到信息了。

Step 3:版本回退

git log 可以看到改动的日志

git log –pretty=oneline 日志简约版

注意此处看到的commit ID 将作为回退的更具

git reset –hard HEAD^回退到上一个版本 以此类推 HEAD^^回退到上上个版本 更甚至 HEAD~100前100个版本

git reset –hard 331231  回滚到指定ID版本

git-headgit-head-move这些操作的本身 实质上改的是head指针的位置

git reflog 查看每一次的操作日志 也可便于查看commit id

Step 4:工作区和暂存区

git-repo

默认建库创建的是master分支以及指向master的指针HEAD

需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。

add操作是提交到暂存区  commit 是把暂存区内容提交到当前分支下。

3个工作区是GIT中非常重要的概念,需铭记之。

当你做如下操作: 修改文件(工作区中),然后add(到暂存区),然后再修改文件(工作区),然后commit(到分支)。 最后的结果 只是提交了第一次修改的内容,原因是我们需要add到暂存区的修改才能被提交到分支

Tips:  linux 命令 cat readme.txt 可查看文件内容

Step 5:撤销修改

git checkout --readme.txt 这个操作就是让这个文件回到最近一次git commitgit add时的状态。

比如你改了一个文件,没add,那么撤销会撤销到上一次add时或者commit时的状态。

Step 6:删除文件

git rm xxx文件  将文件移除,但还未提交  git commit –m “xxx” 提交此次操作,这些操作都可以回退

Step 7:从远程库克隆&创建合并分支

git clone 地址 然后就copy一份到当前命令行所在目录 会自动建立一个文件夹

git-br-initial

git-br-create

git-br-dev-fd

git-br-ff-merge

git-br-rm

创建分支:git branch dev 创建一个分支dev

切换到指定分支:git checkout dev

高端合并版本命令: git checkout –b dev 创建并切换到指定分支

当在dev分支下开发完成后,我们可以合并到Master:

首先git checkout master 然后git merge dev 当完全合并后,  就可以删除该分支了:git branch –d dev

git branch 查看分支

Step 8:解决冲突

git-br-feature1

当你在feature1和master2个分支下对同一个内容进行修改的时候,就会发生冲突。

git merge feature1就会提示你冲突,git status可以查看下状态,然后你可以直接看文件的内容 查看冲突细节,当确认 并修改后之后,

add 掉 并且commit即可。

git-br-conflict-merged

解决完之后 就可以 git branch –d feature1删除分支

Step 9:分支管理策略

git merge --no-ff -m "merge with no-ff" dev
--no-ff参数,表示禁用Fast forward
本次合并要创建一个新的commit

 

git log --graph --pretty=oneline --abbrev-commit

Step 10:Bug分支

当前工作区内容已被修改,但是并未完成。这时Boss来了,说前面的分支上面有一个Bug,需要立即修复。可是我又不想提交目前的修改,因为修改没有完成。但是,不提交的话,又没有办法checkout到前面的分支。此时用Git Stash就相当于备份工作区了。然后在Checkout过去修改,就能够达到保存当前工作区,并及时恢复的作用。

git stash 会有一个栈的管理,管理你的工作状态,你可以多次使用git stash

当你要恢复工作现场,git stash apply,但是该操作不会删除stash内容,你需要用git stash drop来删除

另外一种方式,使用git stash pop (有恢复和删除功效)

git stash list 可以查看栈中的情况

Step 11:Feature分支

经常开发新增一个新的功能,常需要增加一个分支来开发,完成后合并,并删除分支。

你接到任务开发新功能,当你建了分支开发完后,切回去准备合并时,老板说这个功能又不要了,这个时候,你可能需要删除分支:

git branch –d xxxx 这个方式 不行,会提示你还未合并 就想删?

你需要更暴力的:git branch –D xxxx

Step 12:多人协作

当你clone一个远程库的时候,git自动把本地的master与远程的库关联起来,并且远程仓库的默认名字是origin

要查看远程库的信息,用git remote,更详细的信息可以:git remote –v

origin  git@github.com:michaelliao/learngit.git (fetch)
origin  git@github.com:michaelliao/learngit.git (push)

若没有推送权限,会隐藏第2条信息

Step 13:推送分支

推送指定分支到远程,也就是提交:

git push origin master

抓取分支

默认clone下来只能看到master分支

若你想远程origin的dev分支到本地,你可以 git checkout –b dev origin/dev

然后开发完了可以 git push origin dev

多人协作的工作模式通常是这样:

  1. 首先,可以试图用git push origin branch-name推送自己的修改;

  2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;

  3. 如果合并有冲突,则解决冲突,并在本地提交;

  4. 没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!

如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name

这就是多人协作的工作模式,一旦熟悉了,就非常简单。

Step 14:标签

首先切换到需要打标签的分支上

然后git tag v1.0

git tag查看所有标签信息

默认标签最近一次commit。如果标签指定的

git tag v0.9 6224937
git tag -a v0.1 -m "version 0.1 released" 3628164 标签带说明
git show <tagname>可以看到说明文字
操作标签
git tag -d v0.1删除标签
标签推送到远程git push origin <tagname>
一次性全推送所有标签:
git push origin –tags
若标签已在远程,想删除标签:
git tag -d v0.9 先删本地
git push origin :refs/tags/v0.9 再删远程
忽略特殊文件

忽略文件的原则是:

  1. 忽略操作系统自动生成的文件,比如缩略图等;

  2. 忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;

  3. 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。

  • 忽略某些文件时,需要编写.gitignore

  • .gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理!

Windows创建文件命令:echo.>.gitignore

转载于:https://my.oschina.net/wangjunhe/blog/380455

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值