本文目录
- 1.克隆分支到本地
- 2.Git 分支相关问题
- 3.解决冲突
- 4.版本回退=>撤销上一次的提交
- 5.git 提交到本地仓库有问题怎么办
- 6.Git 代码已经 push 上去发现有问题
- 7.Git 关于暂存的问题
1.克隆分支到本地
git clone只能clone远程库的master分支,无法clone所有分支,解决办法如下:
1. 找一个干净目录,假设是git_work
2. cd git_work
3. git clone http://myrepo.xxx.com/project/.git ,这样在git_work目录下得到一个project子目录
4. cd project
5. git branch -a,列出所有分支名称如下:
remotes/origin/dev
remotes/origin/release
6. git checkout -b dev origin/dev,作用是checkout远程的dev分支,在本地起名为dev分支,并切换到本地的dev分支
7. git checkout -b release origin/release,作用参见上一步解释
8. git checkout dev,切换回dev分支,并开始开发。
2.Git 分支相关问题
分支中的常用命令:
- git 拉取指定分支的代码:git clone -b 分支名称 地址
- 查看当前分支:git branch
- 查看远程分支:git branch -a
- 创建并切换分支:git checkout -b add_orderdesc
- 切换分支:git checkout 分支名称
- 查看当前的本地分支与远程分支的关联关系:git branch -vv
3.解决冲突
git冲突在这两天有些频繁,在git pull合并代码的时候,就发生冲突,而且反复执行发现还是存在冲突,后来发现了一个状态–Merging。
解决方法
git pull 出现冲突后可以暂存本地修改git stash ,然后git pull 更新代码,git stash list 可查看暂存记录列表,释放本地暂存 git stash apply stash@{0} ,出现冲突文件,找到并解决,然后可以提交git add . 加入索引库,然后本地提交git commit -m '注释' 最后git push到远程
4.版本回退=>撤销上一次的提交
git reset --hard head
该命令是回退版本信息,在Git中,用HEAD表示当前版本,上一个版本就是HEAD,上上一个版本就是HEAD,当然往上100个版本写100个比较容易数不过来,所以写成HEAD~100。
5.git 提交到本地仓库有问题怎么办
情景:最近一次 commit 的代码有问题怎么办?
这时候可能有小伙伴说直接修改再提交一次不就好了,这里说一下优雅的方式,不进行再一次提交,修改这次提交。
git add 我是修改内容.txt
git commit --amend
【amend】修正,会对最新一条 commit 进行修正,会把当前 commit 里的内容和暂存区(stageing area)里的内容合并起来后创建一个新的 commit,用这个新的 commit 把当前 commit 替换掉。
输入上面的命令后,Git 会进入提交信息编辑界面,然后你可以删除之前的 changeId,并且修改或者保留之前的提交信息,:wq 保存按下回车后,你的 commit 就被更新了。
对于 amend 还可能出现几种小问题,下面列举下:
刚刚写的提交信息有问题,想修改怎么办?
git commit --amend -m "新的提交信息"
刚刚提交完代码发现,我有个文件没保存,漏了提交上去怎么办?
最简单的方式,再次 commit:
git commit -m "提交信息"
另一中方式,使用--no-edit,它表示提交信息不会更改,在 git 上仅为一次提交。
git add changgeFile // changeFile 刚刚漏了提交的文件
git commit --amend --no-edit
6.Git 代码已经 push 上去发现有问题
情景:出错内容已经 push 到了 master 分支
这种情况可以使用 Git 的 revert 指令。
git revert HEAD^
上面这行代码就会增加一条新的 commit,它的内容和倒数第二个 commit 是相反的,从而和倒数第二个 commit 相互抵消,达到撤销的效果。
在 revert 完成之后,把新的 commit 再 push 上去,这个 commit 的内容就被撤销了。
revert 与前面说的 reset 最主要的区别是,这次改动只是被「反转」了,并没有在历史中消失掉,你的历史中会存在两条 commit :一个原始 commit ,一个对它的反转 commit。
7.Git 关于暂存的问题
假如正在开发手中需求的时候,突然来了个紧急 bug 要修复,这时候需要先 stash 已经写的部分代码,使自己返回到上一个 commit 改完 bug 之后从缓存栈中推出之前的代码,继续工作。
- 添加缓存栈: git stash
- 查看缓存栈: git stash list
- 推出缓存栈: git stash pop
- 取出特定缓存内容:git stash apply stash@{1}
注意:没有被 track 的文件(即从来没有被 add 过的文件不会被 stash 起来,因为 Git 会忽略它们。如果想把这些文件也一起 stash,可以加上 -u 参数,它是 --include-untracked 的简写。就像这样:git stash -u
网友评论