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.关于git commit -m "注释"
如果出现提示 Please Tell me who are you
这是账户和密码没被记住
git config --global user.email "你的git注册的email"
改动后,在git push的时候会提示输入用户名和密码
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/dev5 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找回。