git使用和指令详解

版权声明:转载请注明出处 https://blog.csdn.net/h2604396739/article/details/84591379

最近使用git已经有三个月了,是时间总结一下了。先说明git和svn最大的两点区别:

1)使用上:git多了本地分支,所以与真正分支有了隔离,并且offline也可以看log等,指令较多。但是提供了pull request等功能,功能更加强大。

2)最核心的区别Git是分布式的,而Svn不是分布的。git使用元数据和head等来处理多版本,而svn真的是多个文件

整体来说感觉git灵活,强大但难于掌握点。

详细区别借鉴:https://www.cnblogs.com/mtl-key/p/6902627.html

主要操作指令与流程如下:

1 clone项目到本地,先cd到你的工作空间,然后执行

git clone ssh://user@host/path/to/repo.git

2  查看本地分支的提交和修改

git status  展示所做变化,包括workspace中的和已经commit到本地分支的

    对于workspace中的修改:提示如        modified:   src/main/webapp/org/cboard/view/dashboard/param/cascading.html
    对与已经提交到本地分支的修改:提示如 Your branch is ahead of 'origin/cboard/100' by 1 commit.

3 提交修改到暂存区,暂存区到本地分支

git add 是处理暂存区和你workspac中的修改,执行git add什么都不会做,增加了参数才可以
git add -A  提交所有变化
git add -u  提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)
git add .  提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件 ‘’

git commit -m "提交的注释"   将暂存区的修改提交到本地分支

注意git中代码的提交分为三个层次,你修改的代码实际在workspace中,add后修改保存到本地暂存区,commit后保存到本地分支,push后保存到远程分支,只有提交到远程分支别人才可以获取到你的代码。

4 拉取所有上游提交命令到本地仓库,并尝试和她的本地修改合并:git pull --rebase origin master

--rebase选项告诉Git把本地提交移到同步了中央仓库修改后的master分支的顶部,如果有冲突:

git add <some-file>

git rebase --continue

5 提交本地分支到远程分支:git push origin master

注意,origin是在克隆仓库时Git创建的远程中央仓库别名。master参数告诉Git推送的分支

6 新建分支

在开始开发功能前,小红需要一个独立的分支。使用下面的命令新建一个分支

git checkout -b marys-feature master

这个命令检出一个基于master名为marys-feature的分支,Git-b选项表示如果分支还不存在则新建分支。

7

git push -u origin marys-feature
git push

这条命令push marys-feature分支到中央仓库(origin),-u选项设置本地分支去跟踪远程对应的分支。
设置好跟踪的分支后,小红就可以使用git push命令省去指定推送分支的参数。

8合并marys-feature的内容到master

git checkout master
git pull
git pull origin marys-feature
git push

首先要检出master分支并用git pull确认是它是最新的。然后执行git pull origin marys-feature合并marys-feature分支到和已经和远程一致的本地master分支。

9或者用merge的方式,先创建并使用some-feature分支

git checkout -b some-feature develop

他们用老套路添加提交到各自功能分支上:编辑、暂存、提交:

git status
git add <some-file>
git commit

添加了提交后,小红觉得她的功能OK了。如果团队使用Pull Requests,这时候可以发起一个用于合并到develop分支。将some-feature合并到develop:

git pull origin develop
git checkout develop
git merge some-feature
git push
git branch -d some-feature

第一条命令在合并功能前确保develop分支是最新的。注意,功能决不应该直接合并到master分支。

git rebase指令详解:

git rebase指令的使用,在本地仓库对commit进行处理,注意此命令执行后没有push到远程仓库
rebase作用1:在本地仓库合并多个commit为一个完整commit
git rebase -i [startpoint]  [endpoint] 在这里面进行对所有提交到本地仓库还没有提交到远程仓库的commit进行操作,可以删除合并等,
其中-i的意思是--interactive,即弹出交互式的界面让用户编辑完成合并操作,[startpoint]  [endpoint]则指定了一个编辑区间,如果不指定[endpoint],则该区间的终点默认是当前分支HEAD所指向的commit(注:该区间指定的是一个前开后闭的区间)。

操作指令解释如下:
pick:保留该commit(缩写:p)
reword:保留该commit,但我需要修改该commit的注释(缩写:r)
edit:保留该commit, 但我要停下来修改该提交(不仅仅修改注释)(缩写:e)
squash:将该commit和前一个commit合并(缩写:s)
fixup:将该commit和前一个commit合并,但我不要保留该提交的注释信息(缩写:f)
exec:执行shell命令(缩写:x)
drop:我要丢弃该commit(缩写:d)

第一次wq后会进入修改注释页面

如果退出后需要继续编辑使用指令如下
git rebase --conitnue 会进入commit对应注释的处理,就是可以修改你提交到本地仓库时的注释
 然后 退出就会自动提交
get rebase --abort 放弃rebase

rebase作用2:将某一段commit粘贴到另一个分支上

现在所在的分支是cboard/100,gi他log结果如下:

现在新建branch dev;指令如下:git branch dev;现在想把commit1的内容粘贴到dev上

执行指令如下 :git rebase 155288695 b45901a42 --onto dev

注意:虽然此时HEAD所指向的内容正是我们所需要的,但是dev分支是没有任何变化的,git只是将C~E部分的提交内容复制一份粘贴到了dev所指向的提交后面,我们需要做的就是将dev所指向的提交id设置为当前HEAD所指向的提交id就可以了

git checkout dev
git reset --hard b45901a42
 

建议深入了解git工作方式的仔细看下下面的博客,很受益:

https://www.cnblogs.com/xirongliu/p/4584653.html

猜你喜欢

转载自blog.csdn.net/h2604396739/article/details/84591379