git常用操作

0.关于Git

本地仓库由三棵“树”组成。1.工作目录,它持有实际文件;2.缓存区(Index),临时保存你的改动;3.HEAD,指向你最近一次提交后的结果。

1.免密登录

cd && ssh-keygen -t rsa  //生成公钥:~/.ssh/id_rsa.pub

copy公钥至 git "设置" → "SSH Key",git免密码

copy公钥至 linux服务器 ~/.ssh/authorized_keys,linux免密登录

2.拉取工程

git clone http://gitlab.juren.com/root/jurenapp.git

设置提交信息

cd jurenapp

git config --global user.name "zhaosi"

git config --global user.email "zhaosi@juren.com"

3. 查看分支

git pull

git branch   //本地分支

git branch -r  //远端分支

git branch -vv  //本地分支、提交信息、远端分支关系。(最好本地分支和远端分支都有对应)

4.建分支

git pull

git checkout -b feature/2527 origin/master     (或 git checkout master && git pull & git checkout -b feature/2527)     //永远都从master建出分支,如果不加"origin/master",会从当前分支复制新建(不推荐)

git push --set-upstream origin feature/2527   //提交远端并建立关联(最好同名),第一次push远端要加--set-upstream,以后直接git push即可

如第一提交远端没有--set-upstream建立关联,git pull需指明远端分支名:git pull origin feature/2527, 否则报提示:“Please specify which branch you want to merge with” 补充关联解决:git branch --set-upstream-to=origin/feature/2527  feature/2527

建分支方法二:gitlab网页端新建(基于master),本地 git pull && git checkout feature/2527

5.切换分支

git pull      //更新,能看到新建的分支

git checkout feature/2527  //切换到feature/2527分支

coding 。。。。

6.确认修改

git status 查看本地修改的文件状态

git diff 查看所有的修改细节

git diff origin/master origin/feature/2527 core/dao/useModel.php 查看某个文件的修改

git diff origin/master origin/feature/2527 --stat 查看两个分支的文件变动

git diff release-20171121-1 HEAD --stat 查看

git log  //查看提交信息

7.提交

git add .  //提交当前目录全部文件 

git add  public/index.html //或者挨个提交文件

git commit -m "新增订单类型修改"

git pull //更新一下本分支有没有协同更新

git push origin feature/2527 提交git远端

8.恢复

git checkout public/index.html  //替换该文件的本地改动

git reset --hard origin/feature/2527  &&  git pull  //丢弃所有本地改动,只用远端版本

git log  &&  git reset --hard ac3ac10ceddf717ee03d018a7b3 && git push -f origin feature/2527  // 远端仓库回滚版本,开发负责人操作,尽量避免 !!!慎重

9. 合并分支

把自己的feature合并到每周二上线发布指定的release分支(以日期命名的release/20170520)

git pull

git checkout release/20190520

git merge origin/feature/2619    //如果有冲突则解决冲突

:wq    //出来提示需:wq写入

git push origin release/20170520

10.冲突

两人修改同一文件,不同行会自动合并,同一行会产生冲突,需解决冲突,再次提交:

  • git log public/index.html 找到冲突处的修改人,两人一起确认解决

  • 编辑冲突文件,找到“=========>”标记,确认可用的代码块删除不用的代码块,保存

  • git add public/index.html  && git commit -m "解决合并冲突 - xxx业务"  && git push origin release/20170520

  • 解决冲突后报错

    fatal: cannot lock ref 'HEAD': Unable to create 'C:/Users/jiyan/Desktop/files/.git/refs/heads/5G-CLEN-ZJ-ERQI.lock': File exists.

    Another git process seems to be running in this repository, e.g.
    an editor opened by 'git commit'. Please make sure all processes
    are terminated then try again. If it still fails, a git process
    may have crashed in this repository earlier:
    remove the file manually to continue.
    找到

    对应该的文件删掉然后git commit -m "解决合并冲突 - xxx业务"   && git push

11.gitignore

编辑工程目录下的.gitignore文件,添加不想提交git版本管理的文件和目录,如:log、config、runtime、cache、临时文件、IDE生成文件、.svn等版本控制文件

12.tag操作

git checkout release/20171121  && git pull

git tag release-20171121-2

git push origin release-20171121-2

git diff release-20171121-1 release-20171121-2 --stat

git tag -r

13.分支删除

git branch -d feature/2527  //删除本地分支

git push origin :feature/2527  //删除远端分支

14.分支tag

git tag -d tagName  //删除本地tag

git push origin :refs/tags/tagName  //删除远端tag

15.git 批量删除tag标签 

# 删除所有远程标签

git show-ref --tag | awk '{print ":" $2}' | xargs git push origin

# 删除所有本地标签

git tag -l | xargs git tag -d

16.其它相关命令学习

git stash //暂存未完成工作,恢复到最近一次提交

git stash pop //弹出最近一次保持的修改

git stash list //显示暂存栈的保存列表

git stash clear //清空暂存栈

git blame public/index.html  //查看文件修改历史细节

17.git本地已经文件与git仓库关联起来

1.控制台中进入本地文件夹,执行git init命令创建.git文件

2.执行git remote add origin (仓库地址)     使本地的文件夹与远程的仓库对应起来

3.执行git pull origin master拉去远程线上代码

4.执行git status查看当前更改状态

5.执行git add .将当前的改动进行提交

6.执行git commit -am 'hahha’提交全部并加上注释

7.执行git push 把所有的东西都推送到远程服务器上

8.git remote -v   查看本地关联的远程仓库地址

9. git remote set-url 远程仓库地址    修改关联的远程仓库地址

10.git push origin --all     git push origin --tags    推送全部分支与tag到远端

11.git 获取所有远端分支到本地

git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
git fetch --all
git pull --all

18.git报错处理

git: 'credential-manager' is not a git command. See 'git --help'.

1)运行 git config --list,部分输出如下:

core.editor=nano
credential.helper=manager
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
remote.origin.url=https://github.com/xxx.git
remote.origin.fetch=+refs/heads/:refs/remotes/origin/
branch.master.remote=origin
branch.master.merge=refs/heads/master

2)运行git config --global --unset credential.helper,之后再git push orgin master即可。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值