Git使用

Git说明

Git属于分布式版本控制系统,相对于SVN等集中式版本控制系统有很多优势。

工作本地有一个完整的版本库,这样工作的时候不联网的情况,也可以控制版本。

工作区(Working Directory) -- 当前的工作目录

版本库(Repository)            -- .git文件夹

 

版本库中内容:

1.暂存区stage(或者叫做index),通过git add命令添加

2.master分支,以及指向master分支的HEAD,通过git commit命令添加到当前分支。

Git本地使用介绍

①    版本库创建

gitinit

作用在本地创建.git目录用来跟踪管理版本库。

②    把文件添加到版本库

gitadd filenames

通过以上命令将文件添加到本地索引,用于下次的commit

gitcommit -m “commit log”

根据之前add的本地索引,向版本库提交文件。

③    变更上传

git status

查看版本库当前的状态

git diff

查看具体变更内容

git add filenames

通过以上命令将文件添加到本地索引,用于下次的commit。

Git跟踪管理的是修改,并非是文件,同一文件多次修改的情况下,每次修改后都需要先用git add命令添加到index,不然修改无法提交。

gitcommit -m “commit log”

根据之前add的本地索引向版本库提交文件,可以add多次,再整体的commit。

④    版本回退

git log

查看变更的历史记录

git log --pretty=oneline

让履历行显示

git reset --hard HEAD~

回退到上一个版本,上上一个版本是 HEAD~~  前N个版本 HEAD~N

⑤    版本回退之后再回退回来

git reflog

查看历史命令,显示commit_id

git reset --hard commit_id

通过commit_id 可以确定回到哪个版本

⑥    丢弃工作区的修改

git checkout -- filename

将filename文件在工作的修改全部撤销。

一种是文件自修改后没有放到index暂存区,现在,撤销修改就回到版本库一模一样的状态。

一种是文件已经添加到index暂存区,又做了修改,现在撤销修改就回到添加到暂存区后的状态。

总之,就是让这个文件回到最后一次git commit 或git add时的状态。

git checkout .

用来一次撤销全部修改

⑦   撤销index暂存区

git reset HEAD file_name

撤销掉index暂存区,重新放回工作区。

使用方法⑥丢弃工作区的修改。

⑧   删除文件

git rm filename

git commit -m “Log message”

从版本库里删除文件

本地文件误删除的场合,参照⑥

⑨   备份当前工作区的内容

git tash

从最近的一次提交中读取相关内容,让工作区保证和上次提交内容没有冲突,同时将当前工作内容保存到Git栈中。

git stash list

显示Git栈内的所有备份

git tash pop

从Git栈中读取最近一次保存的内容,回复到工作区。并且将保存内容从Git栈删除。

git stash clear

清空Git栈

git stash apply stash_name

恢复指定的stash,不删除Git栈内容

git stash drop stash_name

删除指定的stash。


 

 

Git远程操作介绍

①   从服务器克隆到本地

git clone

使用 git://这样的路径,默认的使用ssh协议,加密,速度比较快。

②    查看远程库的信息。

git remote

通过命令git remote -v  可以显示更详细的信息。

③   推送分支

git  push  server_name branch_name

一般情况本地的master分支是主分支,因此要和远程同步。

其他本地分支是否需要和服务器同步视情况而定,如果不推送到远程,对其他人是不可见的。在Gti中,分支完全可以在本地自己藏着玩,是否推送,视心情而定。

④   抓取远程的新提交

git pull

如果pull失败,本地分支和远程分支不关联的情况,使用以下命令:

git branch -a  查找远程分支

git branch --set-upstream-to=远程分支

⑤   获取远程提交解决冲突

git pull 成功但是合并有冲突,需要手动解决本地冲突,

然后提交,再push

⑥   从本地创建和远程分支对应的分支

git checkout -b branch_name Server/branch_name

 

 

Git分支管理

Master分支为主分支,指向提交的。

HEAD指向当前分支。

一开始IDE时候,master分支是一条线,Git使用master指向最新的提交,再用HEAD指向master,确定当前分支以及当前分支的提交点,

创建新的分支,Git创建了一个新的指针dev,指向master相同的提交,然后HEAD指向dev,表示当前分支在dev上

之后的提交,会提交到HEAD指向的当前分支

假如当前dev分支上的工作完成了,dev合并到master上

合并分支时候,如果可能,Git会用Fast forward模式,这种模式下,删除分支后,会丢掉分支信息。如果强制禁用Fast forward模式,Git会在merge时生成一个新的commit,这样分支历史上就可以看出分支信息。

删除分支,就是直接删除分支的指针。

分支的冲突,当在两个分支上分别作了不同的修改之后,试图合并两个分的时候,可能会有冲突。

分支冲突的场合需要手动差分解决冲突。

 

①   创建分支,然后切换到分支

git checkout -b branch_name

相当于一下两条命令

git branch branch_name

git checkout branch_name

②   查看当前分支

git branch

列出所有分支,当前分支前面会有一个*

③   切换分支

git checkout branch_name

④   合并分支

git merge branch_name

合并分支先要迁移到想要合并到的目标分支上,使用上述命令将想要合并的分支合并到当前分支上。

⑤   普通模式合并

git merge --no-ff -m"Merge LOG" branch_name

本次合并需要创建一个新的commit,所以加上-m参数,把commit描述写进去。

⑥   解决冲突

git merge命令使用完了后,如果存在冲突的话会提示COFLICT信息。

必须手动解决冲突后再提交。

git status 命令也可以告诉冲突的文件。

冲突文件内会Git会用 <<<<<< . ========.>>>>>>>标记出不同的分支的内容。

修改后通过 git add , git commit 提交后会解决掉冲突。

通过命令 git log --graph--pretty=oneline --abbrev-commit 可以查看合并的log

⑦   删除分支

git branch -d branch_name

删除分支的时候不能删除当前分支,即HEAD指向的分支不能被删除。

如果要删除一个没有被merge过的分支,需要使用强行删除命令。

git branch -D branch_name

 


 

 

分支策略

在实际开发中,我们应该按照几个基本原则进行分支管理:

首先master分支应该非常稳定,也就是仅用来发布新版本,平时不能在上面干活;

工作都在dev分支上,也就是说,dev分支是不稳定的,到某时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支上发布1.0版本;

TAG

①   创建tag

git tag tag_name

通过git checkout 命令切换到需要打tag的分支上,然后使用以上命令就可以打tag

②   查看所有tag

git tag

③   使用commitID打tag

git tag tag_name cimmitID

使用命令git log --pretty=oneline --abbrev-commit查看commitID

④   查看tag详细信息

git show tag_name

⑤   创建tag提交comment

git tag -a tag_name -m “commentmessage” commitID

⑥   创建使用PGP签名的tag

git tag -s tag_name -m "commentmessage" commitID

⑦    删除tag

git tag -d tag_name

⑧    向服务器提交tag

git push server_name tag_name

也可以使用git push server_name --tags一次性提交所有没有提交的本地tag

⑨   删除服务器的tag

首先删除本地的tag然后使用命令  gitpush server_name  :refs/tags/tag_name

 

配置别名

 

git config --global alias.st status

上述命令可以简化输入,以后st就可以表示status

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值