天天看点

工作中对git使用的总结

       git与svn的区别,简单的说,

       svn在checkout后,如果不提交,那么版本库没有记录,如果修改的文件比较多,中间想回退几个文件,非常麻烦。git 是clone下来代码和记录,不提交到服务器时,可以本地多次commit,能做到部分回退,最后push到服务器,push的除了代码变更,还没有每一次的提交记录。

另外,git对一些场景比较适用,比如新需求正在开发,突然发现线上有bug,svn随着不断提交,代码已经与生产环境有差异,最好的办法是取某个时间的版本进行修改,再一点点合并进去。而git,线上与开发可以是不同分支,可以优先改线上代码,完成debug后,将线上分支merge到开发分支,就可以了。

1.clone代码

命令 git clone -b dev https://github.com/xuezhankui/SpringbootExample

黄色部分为clone dev分支,不加的话,clone下来master分支,修改分支可以通过git branch命令来改

2.git branch命令

首先,查询本地分支和远程分支都有哪些

git branch -a

黄色部分代表远程分支,没有参数显示本地分支。

其次,改变push的分支

因为是从master clone到本地master,所以master分支的push,必将上传到线上master分支,现在改一下。

情况1:如果线上有dev分支,想clone这个,但是是以masterclone下来的,

这时候只需要

git checkout -b dev origin/dev 作用是checkout远程的dev分支,在本地起名为dev分支,并切换到本地的dev分支

情况2:

使用本地dev分支,push的时候指定master分支。

虽然不建议这么做,至少给个方法

1.此做法与合并时有点像

git checkout dev 切换到dev分支

git branch --set-upstream-to=origin/master 设置push的目标

git push

2.一步搞定

git push origin master

最后,删除分支

git branch -d 要删除的分支

3.提交代码

这个简单,就简单说了

1。用git status命令,可以查看到都改了哪些文件

2.git add

两种方式,第一种,git add 路径/文件名

第二种,git add * //添加所有变更文件

3. git commit

git commit -m “注释信息”

4.合并以及冲突合并

场景:在dev_feature_xx分支改完了,需要合并进dev

方法一:

git checkout dev 切换到dev

git merge dev_feature_xx

可能会产生冲突,冲突的文件可以用git status找到

commit前也可以用 git diff dev_feature_xx dev 对比一下

合并完冲突文件

git add 冲突文件

git commit -m 'merge'

如果不确定dev对应哪个remote分支,可以执行一下

git branch --set-upstream-to=origin/dev 设置push的目的地

git push

或者

git push origin/dev

也有时候用另一种方式,基本差不多,看具体情况

git checkout dev

git pull origin dev_feature_xx

修改冲突文件

git add 冲突文件

git commit -m 'merge'

git push origin/dev

5 rollback

首先了解两个命令

git reflog 版本变化的记录,包含回退操作

git log 每次提交的记录,包含了注释,和commit id

方式一:

id方式 git reset <id> <文件名>

文件名不写的话,恢复所有文件

方式二:

HEAD方式,当前版本是HEAD

比如你修改了文件,后悔修改了,可以

git reset HEAD <文件名>

如果想恢复到上一个版本

git reset HEAD^

再上一个版本HEAD^^,以此类推

6.其他操作

       git rm <文件名>  删除,这里指从git库删除。

相当于 rm <文件名> git add <文件名>

删除后要commit。

        删除文件后的恢复:以a.txt为例

        1.未commit到git库的文件,删除后就没有了

        2.删除操作在执行commit之前,可以 git reset HEAD a.txt,将文件恢复到缓冲区,然后,git checkout a.txt找回。

        3.删除操作已经提交,可以 git reset HEAD^ a.txt,将文件恢复到缓冲区,然后,git checkout a.txt找回。

posted on 2019-02-24 18:56 薛占奎 阅读(...) 评论(...) 编辑 收藏

git