小总结一下git使用及常见的坑

以下为不理解,只会用版本。

一、准备:克隆代码及走对分支

以下流程:
1、在~拉代码
2、git clone克隆代码,复制命令到机器上
3、git pull 记得确保拉的最新的
git pull与git fetch区别,pull自动merge,fetch不会自动merge
4、git brach -a ①确定在哪个分支 ②看将来代码提交的分支有没有
git branch -a能看到本地分支和远程分支。
5、有:git checkout 分支名X 切换到将来要提交的分支X
6、没有:

  • 1)git checkout -b 分支名Y 新建分支Y并切换到该分支
    一般基于master拉分支。
    新建分支开发前,记得先在master分布上git pull!!!再搞新分支!
  • 2)git push 设置远程,远程才会有分支Y,根据报错提示输正确命令git push --set-upstream origin Y
    7、记得刷新网页的代码

二、在所在分支交代码

确认好分支。
进行以下流程:
1、git status看当前的状态,能看到修改了啥,加了啥文件
2、git diff一下 提交前,好好确认一下差异
3、git add 修改或者新增的文件 可以一次add多个文件
4、git commit -m "卡片id 注释" 没有关联卡片的话,就不写卡片Id。
忘记提交了一个文件,合并提交:git commit --amend
5、git push origin HEAD:refs/for/远程分支名

git push <remote 名字> <本地分支的名字> : <远程库的名字>
git push 肯定是推送
origin : 是远程的库的名字
HEAD: 是一个特别的指针,它是一个指向你正在工作的本地分支的指针,可以把它当做本地分支的别名,git这样就可以知道你工作在哪个分支
refs/for :意义在于我们提交代码到服务器之后是需要经过code review 之后才能进行merge的

随时git log查看提交记录。

三、常见问题

1、一次只能提交一个记录,解决方法:

1、通过下列命令撤销重新提交,xxx 为分支名
git reset --soft origin/xxx
比如:当前分支为 hahaha-666,命令则为:git reset --soft origin/hhh-666
2、按以前的提交流程重新提交一下(按照以前 git push 的方式提交)。
还要再git add一下。

2、已经提交到远程了然后需要修改,怎办?

1.还没有合入到远程分支
还是git add …git commit --amend git push…一遍

2.已经合入到远程分支
还是git add…一遍,BUT git commit变一下,合并提交
git commit -m “注释”
git push…

3、正在一个分支上修改,想换个分支,这次修改想先暂存着该怎么办?

(1)git stash 可以将所有未提交的修改都暂存起来。
后面可以通过git stash pop将修改恢复到当前工作目录。

实际应用中推荐给每个stash加一个message,用于记录版本,使用git stash save取代git stash命令:git stash save “test-satsh”

(2)git stash pop:会将缓存堆栈中的第一个stash删除,并将对应的修改应用于当前的工作目录下。
也可以用git stash apply命令:它不会删除stash拷贝,可以多次应用到工作目录中。

(3)git stash list:可以使用该命令查看现有stash,使用git stash drop命令删除某个stash,后面可以跟着stash名字。

4、执行完commit后,想撤回commit,怎么办?

常用:git reset
1、git reset --soft HEAD^
–soft不删除工作空间改动代码,撤销commit,不撤销git add
HEAD^的意思是上一个版本,也可以写成HEAD~1
如果你进行了2次commit,想都撤回,可以使用HEAD~2
也可直接reset分支:eg,git reset --soft origin/nd-frontsrd-3337 reset远程分支3337
2、git reset --mixed HEAD^
–mixed
意思是:不删除工作空间改动代码,撤销commit,并且撤销git add . 操作
这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。
3、git reset --hard HEAD^
–hard
删除工作空间改动代码,撤销commit,撤销git add。
注意完成这个操作后,就恢复到了上一次的commit状态。

5、如何回滚到上一次提交

刚提交的代码需要还原,这叫回滚,已经做了git push,推到了远程仓库。
注意,对远程仓库做回滚是有风险的,必须提前做好备份!!!并通知代码库涉及的其他合作者!任何不懂的命令去试验,都应该记得做备份!
git log查看提交日志
git revert commit id 撤销commit id做出的修改
git push …

git revert commit id1 commit id2 commit id3… 依次撤销commit id1、2、3、…对应的提交,各commit id不必连续

6、记得git pull

保证现在的代码是master最新的。
有时候忘记之前合入到master过。。

7、删除分支

删除本地分支:
1)git branch -a 确定本地分支、远程分支
2)git checkout 切换到非要删除的分支
3)git branch -D branch_name

删除远程分支: 谨慎!
1)git push origin --delete branch_name

8、拉分支开发前,记得先在基准分支上git pull!!!再搞新分支!

不然新拉出来的分支容易有问题。
一般基准分支为master

9.Your branch is ahead of XXX by 2 commits

git status看到:
On branch test
Your branch is ahead of ‘origin/test’ by 2 commits.
(use “git push” to publish your local commits)
解决:
1、git log能看到提交记录:
commit a6a58266b8dc6c5c6c7ed0a2ce85f2d6cee3283d (HEAD -> test)
commit a6e7329e5f52a30e9912fcfba89d29bfcda615a3
commit b4de36ca83ba891336937f491fc23f72bdf62868 (tag: project_1-0-0-1_PD_BL, origin/test)
2、git reset --soft b4de36ca83ba891336937f491fc23f72bdf62868
3、再次查看git log
退回到了:
commit b4de36ca83ba891336937f491fc23f72bdf62868 (HEAD -> test, tag: project_1-0-0-1_PD_BL, origin/test)

4、git status 看下,提示
Your branch and ‘origin/test’ have diverged,
and have 1 and 1 different commits each, respectively.
(use “git pull” to merge the remote branch into yours)
5、再git pull下,git pull后报冲突
CONFLICT (content): Merge conflict in build.sh
Automatic merge failed; fix conflicts and then commit the result.
5、解决冲突
点开文件处理即可

10、想改git commit注释?

解决:
git commit --amend
进入vim编辑区域:修改对应的信息描述,保存退出即可。

11、正在一个分支B上基于之前的基准分支M开发,基准分支被更新了(分支A新合并到master了),落后于基准分支了,怎么办?

一种是提交之后,去解决冲突。

另一种是,提交之前就避免冲突:
(1)在远程仓库,将基准分支合并到当前分支B
将基准分支合并到当前分支,等同于:git checkout B分支 && git merge 基准分支
(2)在本地仓库,在分支B 拉取远程的代码
git pull origin B分支

另一种是在提交之前,合并master的代码到本地开发分支:
(1)直接在本地master git pull拉新代码;
(2)然后再在开发分支,git merge --no-ff master将本地的master合并过来( git merge --no-ff 要拉过来的本地分支);
(3)再在本地交上去到远端。

解决冲突
简单说
背景:master为线上代码的分支。开发的分支为rb_1。有人开发其他需求,拉了其他的开发分支rb_2,并且上线了,代码合入了master。你的开发分支落后了master,怎么解决?
解决:
1.远端:将master的代码合到你开发的分支rb_1,把最新的代码拿到合入
2.本地:把远端分支rb_1的代码同步到本地开发分支rb_1 (git pull orgin rb_1
然后,对冲突做解决:找到冲突代码,accept或者不accept
然后,git add、 git commit、git push冲突的文件

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值