zoukankan      html  css  js  c++  java
  • GIT教程

    15. 子模块

    添加

    git submodule add git@192.168.32.10:jovaccount/asl.git asl

    初始化

    git submodule init

    更新

    git submodule update



    14. git stash

    格式:git stash

    功能:

    将工作区和暂存区的修改,压入栈中,暂时保存起来,两区恢复到修改之前的状态,git status状态为clean

    git stash后,即可放心的切换分支、合并远程分支、提交代码

    操作完成后,可以使用git stash pop恢复现场,恢复中可能产生冲突,有则解决之



    13. 撤销修改

    修改位于工作区,则git checkout -- file,自动删除工作区的修改。

    修改位于暂存区,则git reset HEAD file,暂存区放弃修改,修改进入工作区。



    12. 工作区、暂存区、版本库


    本地文件位于工作区,git add后进入暂存区,git commit后进入版本库。



    11. 添加所有文件

    格式:git add -A 或 git add .

    功能:添加当前目录及子目录下所有修改过的文件



    10. 查看差异


    10.4 比较不同版本文件差异

    git diff VersionNo1:file VersionNo2:file


    file可以是文件,也可以是目录。

    HEAD总代表当前版本; --stat进行概要显示,仅显示有差异的文件名。

    惯例:-号代表左侧版本;+号代表右侧版本。


    10.3 查看修改

    比较工作区和暂存区:git diff file


    此时,修改位于工作区

    -号代表改之前的内容,即暂存区内容

    +号代表改之后的内容,即工作区内容


    比较工作区和版本库:git diff HEAD file


    -号代表改之前的内容,即版本库内容

    +号代表改之后的内容,即工作区内容


    比较暂存区和版本库:git diff --staged file

    git add . 将当前目录及其子目录下的修改提交到暂存区


    -号代表改之前的内容,即版本库内容

    +号代表改之后的内容,即暂存区内容


    10.2 比较两普通文件的差异

    git  diff  f1  f2


    -号代表左侧文件,即f1

    +号代表右侧文件,即f2



    10.1 比较两分支的差异

    格式:git  diff  b1..b2  file  

    功能:可以进行两远程分支间、两本地分支间、远程分支与本地分支间的比较

    注意:file的路径需加以注意,为相对当前目录的相对路径。与--stat结果无关。路径错误,则无显示。



    -号代表左侧分支,即b1

    +号代表右侧分支,即b2


    仅显示哪些文件修改过,加--stat,如图




    1. 本地分支


    1.1 查看

    格式:git branch

    功能:查看本地所有分支


    1.2 创建

    1.2.1

    格式:git branch [Name]

    功能:创建本地分支,名为Name

    说明:

    运行此命令生成分支的前提是,已存在master分支,否则报“fatal: Not a valid object name: master.”错误。

    对于新创建的git目录,生成master的分支的方法是,或者通过git merge远程分支;或者git commit一些东西。

    这两种方式将自动生成master分支。


    1.2.2

    格式:git branch [LocalBranName]  [RemoteRepoName] / [RemoteBranName] 

    功能:创建本地分支LocalBranName,与远程分支[RemoteRepoName]/[RemoteBranName]建立关连

    前提:已运行git fetch [RemoteRepoName]命令获取到该远程分支,即fetch后git branch -r中[RemoteRepoName]/[RemoteBranName]存在


    注意:新分支是在当前分支的基础上创建的,指向当前分支的提交。故创建新分支前,有必要检验当前分支。


    1.3 删除

    格式:git branch -D [Name]

    功能:删除本地Name分支


    1.4 切换

    格式:git checkout [Name]

    功能:切换到Name分支


    1.5 重命名

    格式:git branch -m [Name]  [NewName]

    功能:把本地Name分支重命名为NewName



    5. 提交

    格式:git commit -m "xxx"

    说明:git commit命令并不会将修改推送到服务器。推送操作需要显示地调用git push命令



    8. 合并分支

    格式:git merge [ObjectBranch]

    说明:

    ObjectBranch位于当前版本之后,则无操作,Already up-to-date。


    若Object位于HEAD之前,则无差错合并。


    若Object与HEAD处于不同枝干,则出现冲突。


    冲突内容:


    冲突部分,由======分割为两部分。

    之前,从<<<<<<HEAD到======为当前版本的内容;

    之后,从=====到>>>>ObjectBranch为目标分支内容。


    处理冲突:

    直接编辑冲突文件即可。



    9. 版本回退

    格式:git reset --hard [VersionNo]

    示例:

    git reset --hard fd8c69df8378a4b8031e83002be288455d2e57bf

    git reset --hard HEAD~1

    说明:VersionNo,可以为git log输出中的commit id;可以为HEAD~n,表回退n个版本



    2. 远程库


    2.1 查看

    格式:git remote -v

    功能:查看远程库,获知库名和地址


    2.2 添加

    格式:git remote add [Name] [Url]

    功能:添加远程库

    说明:一个git项目可以添加多个远程库

    例如:

    git remote add RemoteRepoName git@git.coding.net:rongxiaojun/hhh.git

    添加远程仓库RemoteRepoName,URL为git@git.coding.net:rongxiaojun/hhh.git。


    2.3 获取更新

    格式:git fetch [Name]

    功能:获取远程仓库Name的更新,运行完成后,你就可以在本地访问该远程仓库的所有分支,将其中某个分支合并到本地

    说明:

    若使用gitlab或coding.net作远程库,拉取前,需将当前用户——起始目录——.ssh——id_rsa.pub中的公钥添加到项目中(cat id_rsa.pub)

    若对应文件不存在,则运行ssh-keygen -t rsa -C "youremail@example.com"


    2.4 合并

    格式:git merge [RemoteRepoName] / [BranchName]

    功能:将指定的远程分支合并到当前分支,fetch后必须merge,否则更新不可见

    说明:

    合并成功的前提是,工作区和暂存区的修改都已提交,git status处于clean状态

    提交后,即可合并远程分支,有冲突就解决,所有冲突均已解决后,重新commit


    2.5 推送

    格式:git push [RemoteRepoName] [LocalBranchName] : [RemoteBranchName]

    功能:将修改推送到远程库,将版本库内容推到远程库

    说明:

    若远程分支不存在,则创建;若本地分支名为空,则删除对应的远程分支

    推送成功的前提是,获取到远程分支的最新内容,与本地分支合并,解决所有冲突,重新commit后,方可成功推到远程库对应分支

    注意:冒号前后不能有空格


    例如,git push 123 branch1:555

    把本地分支branch1推到远程库123555分支,若555不存在则创建


    2.6 查看远程分支

    格式:git branch -r


    2.7 删除远程分支

    格式:git push [RemoteRepoName]  :[RemoteBranName]

    说明:原理是把一个空分支push到远程库,相当于删除同名分支


    6. 跟踪远程分支

    格式:git branch --track [RemoteRepoName]/[BranchName]

    说明:当前分支和远程分支建立关连。运行git pull,可直接从关连的远程分支获取更新;运行git push,可直接向关连的远程分支推送修改。

    git pull:git fetch  [RemoteRepoName] 和 git merge  [RemoteRepoName]/[BranchName]

    git push:git push [RemoteRepoName] [LocalBranchName] : [RemoteBranchName]

  • 相关阅读:
    java 求 1!+2!+3!+....+10!的和为
    Java 循环控制语句
    java for 循环 九九乘法表
    Java for 循环
    Java while 和 do...while
    Java if语句
    Java switch 语句
    java a++ 和 ++a 理解
    Java 自动转换和强制转换
    二叉树遍历
  • 原文地址:https://www.cnblogs.com/chaikefusibushiji/p/6775749.html
Copyright © 2011-2022 走看看