工作中对git使用的总结

时间:2021-07-21 10:08:09

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

  方法2:
  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找回。