《git常用命令》

举报
坚果的博客 发表于 2021/12/16 00:07:18 2021/12/16
【摘要】 创建新的仓库 新建文件夹,打开,执行 git init 1 检出仓库 创建一个本地仓库克隆版本 git clone /path/to/repository 1 创建远程服务器上的仓库 git...

创建新的仓库

  • 新建文件夹,打开,执行

    git init
    
        
       
    • 1

检出仓库

  • 创建一个本地仓库克隆版本

    git clone /path/to/repository
    
        
       
    • 1
  • 创建远程服务器上的仓库

    git clone username@host:/path/to/repository
    
        
       
    • 1

Git工作流

一个本地仓库由git维护的3客”树”组成。

  1. 工作目录working dic。 – 它持有实际文件
  2. 暂存区Index。 – 它像个缓冲区域,临时保存你的改动
  3. HEAD。 – 它指向你最后一次提交的结果

work flow:working dic –add– ==> Index –commit– ==>HEAD

添加和提交

  • 添加到暂存区

    git add <filename>
    git add *
    git add .
    
        
       
    • 1
    • 2
    • 3
  • 提交到HEAD

    git commit -m 'some comment'
    git commit -m "some comment"
    
        
       
    • 1
    • 2
  • 添加提交二合一

    git commit -a -m 'some comment'
    
        
       
    • 1

查看仓库修改状态

git status

  
 
  • 1

推送更改

  • 现在的改动已经提交到本地仓库的HEAD中,提交到远程仓库

    git push
    
        
       
    • 1

格式git push (remote) (branch),
第一次push必须这样写 git push origin master:master

推送到具体某一分支

git push origin someBranch

  
 
  • 1

分支操作

  • 查看分支

    git branch
    
        
       
    • 1
  • 查看分支最后提交状态

    git branch -v
    
        
       
    • 1

    --merged--no-merged 这两个有用的选项可以过滤这个列表中已经合并或尚未合并到当前分支的分支。 如果要查看哪些分支已经合并到当前分支,可以运行 git branch --merged

      aBranch
      iss53
    * master
    
        
       
    • 1
    • 2
    • 3
  • 新建分支

    git branch aBranch
    
        
       
    • 1
  • 切换到aBranch分支

    git checkout aBranch
    
        
       
    • 1
  • 新建切换分支2合一

    git checkout - b aBranch
    
        
       
    • 1
  • 删除分支

    git branch -d aBranch
    
        
       
    • 1

如果将要删除的分支还有没有合并的内容,删除将会失败,使用-D强制删除

error: The branch 'testBranch' is not fully merged.
If you are sure you want to delete it, run 'git branch -D testBranch'.

  
 
  • 1
  • 2
  • 分支重命名

    git branch -m oldBranchName newBranchName
    
        
       
    • 1

分支操作实例

master是默认的分支。在其他分支上进行开发,完成后再将他们合并到主分支上。

  1. 创建一个叫“feature_x”的分支,并切换过去

    git checkout -b feature_x
    
        
       
    • 1
  2. 切换回主分支:

    git checkout master
    
        
       
    • 1
  3. 删除新建分支

    git branch -d feature_x
    
        
       
    • 1
  4. 将分支推送到远程仓库

    git push origin <branch>
    
        
       
    • 1

更新与合并

  • 更新你的本地仓库到最新改动

    git pull
    
        
       
    • 1

会在你的工作目录 抓取fetch并合并merge远端的改动

  • 合并aBranch分支回master分支

    git checkout master
    git merge aBranch
    
        
       
    • 1
    • 2

这种方式叫做直接合并(straight merge)
注意没参数的情况下mergefast-forward的,即Git将master分支的指针直接移到aBranch的最前方。

换句话说,如果顺着一个分支走下去可以到达另一个分支的话,那么Git在合并两者时,只会简单移动指针,所以这种合并成为快进式(Fast-forward)

如何避免每次输入密码

如果你正在使用 HTTPS URL 来推送,Git 服务器会询问用户名与密码。 默认情况下它会在终端中提示服务器是否允许你进行推送。

如果不想在每一次推送时都输入用户名与密码,你可以设置一个 credential cache。 最简单的方式就是将其保存在内存中几分钟,可以简单地运行 git config --global credential.helper cache 来设置它。

压合合并squashed commits

将一条分支上的若干个提交条目压合成一个提交条目,提交到另一条分支的末梢。

aBranch分支上的所有提交压合成主分支上的一个提交,即压合提交:

git checkout master
git merge --squash aBranch

  
 
  • 1
  • 2

此时,aBranch上的所有提交已经合并到当前工作区并暂存,但还没有作为一个提交,可以像其他提交一样,把这个改动提交到版本库中:

git commit -m 'some comment'

  
 
  • 1

拣选合并cherry-picking

拣选另一条分支上的某个提交条目的改动带到当前分支上。

每一次提交都会产生一个全局唯一的提交名称,利用这个名称就可以进行拣选提交。

比如在dev上的某个提交叫:321d76f

把它合并到master中:

git checkout master
git cherry-pick 321d76f

  
 
  • 1
  • 2

要拣选多个提交,可以给git cherry-pick命令传递-n选项,比如:

git cherry-pick –n 321d76f

  
 
  • 1

这样在拣选了这个改动之后,进行暂存而不立即提交,接着可以进行下一个拣选操作,一旦拣选完需要的各个提交,就可以一并提交。

如果发生冲突,解决冲突完后执行git cherry-pick --continue继续拣选合并。

解决冲突(conflicts)

  1. 通过CONFLICT (content):找到冲突文件所在的位置
  2. 打开冲突文件,修改冲突后保存
  3. 通过git status查看冲突是否解决
  4. 通过git diff <source_branch> <target_banch>预览差异
  5. 提交更改git commit -a -m 'some comment'

查看远程分支的完整列表

git ls-remote

  
 
  • 1

获取远程分支更多信息

git remote show

  
 
  • 1

新建远程分支

git push --set-upstream origin newBranch

  
 
  • 1

提交分支数据到远程服务器

git push origin <local_branch_name>:<remote_branch_name>

  
 
  • 1

删除远程分支

git push origin :develop
git push origin --delete develop

  
 
  • 1
  • 2

标签

创建一个1.0.0的标签

git tag 1.0.0 1b2e1d63ff

  
 
  • 1

1b2e1d63ff是你想要标记的提交ID的前10位字符,可使用下列命令获取提交ID

git log

  
 
  • 1

替换本地改动

git checkout -- <filename>

  
 
  • 1

此命令会使用HEAD中的最新内容替换掉你的工作目录中的文件。已添加到暂存区的改动以及新文件都不会受到影响。

假如你想丢弃你在本地的所有改动与提交,可以到服务器上获取最新的版本历史,并将你本地主分支指向它

git fetch orgin
git reset --hard origin/master

  
 
  • 1
  • 2

参考链接

文章来源: jianguo.blog.csdn.net,作者:坚果前端の博客,版权归原作者所有,如需转载,请联系作者。

原文链接:jianguo.blog.csdn.net/article/details/120408990

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。