远程仓库


  • 和远程库skystore关联
    cd skystore
    
    git init
    
    git remote add origin https://gitee.com/skyyemperor/skystore
    
    git pull origin master --allow-unrelated-histories
    
  • 克隆远程库
    git clone https://gitee.com/skyyemperor/skystore
    
  • 查看远程仓库信息
    # git remote show [remote-name]
    git remote show origin
    

推送

  • 把文件添加到本地仓库

    git add a.txt
    
  • 提交到本地仓库

    git commit -m "first commit"
    
  • 第一次推送

    git push -u origin master
    
  • 以后的推送

    git push origin master
    
  • 保存密码,下次push无需重复输入

    git config --global credential.helper store
    

删除


一、 删除本地文件,同时也删除远程仓库的文件

  • 1. 删除本地文件,同时也删除远程仓库的文件
    • 删除文件
      git rm aa.txt
      
    • 删除文件夹
      git rm -r test
      
    • 2. 提交修改
      git commit -m "del some files"
      
    • 3. 将修改提交到远程仓库的xxx分支
      git push origin xxx
      

二、 删除远程库文件,但不删除本地文件

  • 1. 删除远程库文件或文件夹
    git rm -r --cached .idea
    
  • 2. 提交到本地仓库
    git commit -m "del remote .idea"
    
  • 3. 推送到远程仓库
    git push origin master
    

分支

  • 拉取远程分支

    # 在本地新建分支x,并自动切换到该本地分支x
    git fetch origin 本地分支名:远程分支名
    
  • 创建分支

  • 在本地创建分支

    git branch <name>
    
  • 在本地创建与远程仓库对应的分支

    git switch <name> origin/<name>
    
  • 切换分支

    git switch <name>
    
  • 创建+切换分支

    git switch -c <name>
    
  • 查看分支

    git branch
    
  • 合并分支到当前分支

    #git merge –no-ff 可以保存之前的分支历史,能够更好的查看 merge历史以及branch 状态。
    git merge --no-ff -m "merge **" <dev>
    
    #git merge 则不会显示 feature,只保留单条分支记录
    git merge <dev>
    
    git rebase dev  # 取出一系列的提交记录,“复制”它们,放到另一个地方。
    
  • 删除分支

    • 删除本地分支
      git branch -d <name>
      
    • 删除远程分支
      git push origin --delete <name>
      
  • 推送分支

    • 1、从本地推送分支

      git push origin <branch-name>
      
      

    git push origin <本地分支名>:<远程分支名>

    • 2、若推送失败,抓取远程的新提交

    git pull
    ```

    • 3、若pull失败

      git pull origin master --allow-unrelated-histories
      
  • 查看分支合并图

    git log --graph
    

Tag标签

  • 列出标签

    git tag
    
    git tag -l "v1.5*" #模糊匹配
    
  • 创建标签

    git tag first-tag #创建轻量标签
    
    git tag -a first-tag -m "my version first-tag" #创建附注标签
    
  • 查看标签

    git show
    
  • push标签到远程仓库

    git push origin first-tag #推送first-tag标签到远程仓库
    
    git push origin --tags #把所有不在远程仓库服务器上的标签全部传送
    
  • 删除标签

    git tag -d first-tag #删除本地仓库标签
    
    git push origin --delete first-tag #删除远程仓库标签
    
  • 检出标签

    如果你想查看某个标签所指向的文件版本,可以使用 git checkout 命令,。虽然这会使你的仓库处于“分离头指针(detached HEAD)”的状态——这个状态有些不好的副作用。

    git checkout first-tag
    

    在“分离头指针”状态下,如果你做了某些更改然后提交它们,标签不会发生变化, 但你的新提交将不属于任何分支,并且将无法访问,除非通过确切的提交哈希才能访问。 因此,如果你需要进行更改,比如你要修复旧版本中的错误,那么通常需要创建一个新分支:

    git checkout -b new-branch first-tag #利用first-tag标签创建新分支new-branch
    

冲突

  • git pull之后若出现以下情况,则说明发生冲突

  • git status 查看详细情况

  • 修改出现冲突的文件

  • git push 重新推送


小技巧

查看仓库当前状态

git status

查看具体修改内容

git diff a.txt

查看记录

git log #查看详细记录

git log --pretty=oneline #查看单行记录

回滚版本号

git reset --hard head^ #返回前一个版本号

git reset --hard head~100 #返回前100个版本号

git reset --hard e21c #返回指定的版本

git revert c1  # 会创建一个新版本c1'

将文件在工作区的修改全部撤销

git checkout -- a.txt

创建新分支修改bug

  • 修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;

    当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场;

    在master分支上修复的bug,想要合并到当前dev分支,可以用git cherry-pick <commit>命令(例如4csda8e),把bug提交的修改“复制”到当前分支,避免重复劳动。

  • 问题commit your changes or stash them before you can merge

    error: Your local changes to the following files would be overwritten by merge:
    xxx/xxx/xxx.java
    Please, commit your changes or stash them before you can merge.
    Aborting
    
  • 解决方法:

    git stash
    git pull
    git stash pop
    

合并commit

# git log --oneline
fed50f4 (HEAD -> master) c
d96354e b
82b5648 a

# 将b c 两个commit合并
# git rebase -i 82b5  (82b5为开区间,不包含)
pick d96354e b
pick fed50f4 c

# 修改为
pick d96354e b
s fed50f4 c

# 保存后,提交
git add .
git rebase --continue

hhhhh