0%

Git操作相关

加入git版本控制

  • 基本命令

      1.创建项目
      2.git init
      3.git add [需要加入版本控制的文件]
      4.git commit -m"提交信息"
      5.关联远程仓库
          git remote add origin https://git.coding.net/uxaw/surveyDemo.git
      6. 首次推动并关联远分枝
          git push -u origin master
       
          拉取或者推送时如果提示分支找不到,需要到远程仓库合并一下分支.
          我们第一次推送master分支时,加上了 –u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来
      
      7.拉取远程仓库:$ git pull [remoteName] [localBranchName]
          $ git pull (可省略origin master)
      
      8. 以后推送
          git push origin master 
          
      9.切换分支
      
          git checkout -b mytagname tagname 
          
          tagname:分支名称  
          mytagname:存到本地的重命名,建议和原分支名称一致   
      
          推送远程仓库:$ git push [remoteName] [localBranchName]
          $ git push origin master:matser
          
          参考链接:http://blog.csdn.net/free_wind22/article/details/50967723
          
      10.更改远程仓库链接:
      
          如:修改远程仓库项目名将导致项目的访问 URL(包含 Git 仓库的 URL)将会改变,在此之前的 URL 地址将失效。
          
          Git仓库地址修改命令:
           git remote set-url origin [NEW_URL]
    

忽略已跟踪文件

  • 还没有加到版本控制中

      (1)还没有Git add
          在 .gitignore中添加
      (2)已经git add
           先git rm -r --cached 文件
           在.gitignore中添加
    
  • 已经加到版本控制中

       先git rm -r --cached 文件名  
      再在.gitignore中添加
      最后gti commit -m提交.gitignore'
      
      git bash下创建gitignore的命令:
      touch .gitignore
    

Git相关命令

  • 查看状态

      git status
    
  • 远程仓库版本覆盖本地版本:

      $ git fetch –all      //与远程同步
      $ git reset --hard origin/master      //将本地的状态回退到和远程的一样 
      git fetch 只是下载远程的库的内容,不做任何的合并git reset 把HEAD指向刚刚下载的最新的版本
    
  • 查看所关联的远程仓库

      $ git remote -v
    
  • 创建.gitignore文件

      git bash下创建gitignore的命令:
      touch .gitignore
    
  • 设置账户

      设置用户名和邮箱:
      git config --global user.name "ux"
      git config --global user.email "ux@gmail.com"
      
      查看用户名和邮箱
      $ git config user.name
      $ git config user.email
    

Git里程碑

  • 创建添加里程碑

      创建本地里程碑:
      git tag v1.0
      删除本地里程碑:
      git tag -d v1.0
      共享推送里程碑到远成仓库:
      git push origin v1.0
      删除远程仓库里程碑:
      git push origin :v1.0
    

Git第三方客户端SourceTree

  • sourcetree

      git第三方桌面客户端:
      Source Tree
      https://www.sourcetreeapp.com/
    
  • 安装sourceTree时跳过账户登录

      C:\Users\UX\AppData\Local\Atlassian\SourceTree下新建(或者替换)accounts.json
      (UX是我的计算机用户名,找到自己的对应即可,我的版本是2.0.19.1)
    
  • accounts.json内容如下:

      [
        {
          "$id": "1",
          "$type": "SourceTree.Api.Host.Identity.Model.IdentityAccount, SourceTree.Api.Host.Identity",
          "IsDefault": false,
          "Authenticate": true,
          "HostInstance": {
            "$id": "2",
            "$type": "SourceTree.Host.Atlassianaccount.AtlassianAccountInstance, SourceTree.Host.AtlassianAccount",
            "Host": {
              "$id": "3",
              "$type": "SourceTree.Host.Atlassianaccount.AtlassianAccountHost, SourceTree.Host.AtlassianAccount",
              "Id": "atlassian account"
            },
            "BaseUrl": "https://id.atlassian.com/"
          },
          "Credentials": {
            "$id": "4",
            "$type": "SourceTree.Model.BasicAuthCredentials, SourceTree.Api.Account",
            "Username": " ",
            "Email": null,
            "AvatarURL": null,
            "AuthenticationScheme": {
              "$type": "SourceTree.Model.BasicAuthAuthenticationScheme, SourceTree.Api.Account",
              "Value": "Username/Password",
              "Name": "Basic",
              "Description": "Password",
              "HeaderValuePrefix": "Basic",
              "UsernameIsRequired": true
            },
            "Id": " ",
            "DisplayName": null
          }
        }
      ]
    
  • 或者到此链接复制:

    http://op05inpyd.bkt.clouddn.com/accounts.json

多git服务使用配置(ssh key)

Mac下配置多个Git账户(ssh key方式)

查看用户名和邮箱

  git config user.name
  git config user.email

1.如果之前已经使用该命令进行配置,则先使用如下命令清除

    git config --global --unset user.name
    git config --global --unset user.email    

2.设置全局账户

    git config --global user.name "ux"
    git config --global user.email "ux@gmail.com"

3.对每个账户生成一对密钥

    1.首先进入保存秘钥的目录(mac下路径如下)
    cd ~/.ssh
    
    2.然后,根据账户邮箱生成秘钥。例如我在GitHub上的邮箱是ux@gmail.com,则命令为:
    ssh-keygen -t rsa -C "ux@gmail.com"
    
    3.输入完成后,会有如下提示
    
    Generatingpublic/privatersa key pair.Enter fileinwhich to save the key (/Users/liugui/.ssh/id_rsa):
    
    这里要求对秘钥进行命名,默认的文件名是id_rsa。为了方便区分,我这里命名为id_rsa_github
    
    接下来的提示都直接进行回车,直到秘钥生成。通过ls命令,可以看到刚刚生成的密钥对id_rsa_github和id_rsa_github.pub。
    其中id_rsa_github.pub是公钥

4.私钥添加到本地

    ssh-add ~/.ssh/id_rsa_github // 将GitHub私钥添加到本地

5.对本地秘钥进行配置

由于添加了多个密钥文件,所以需要对这多个密钥进行管理。在.ssh目录下新建一个config文件:

touch config

config配置内容如下:

    #############github###############
    #网站的别名,随意取
    Host github.com
    #托管网站的域名
    HostName github.com 
    #托管网站上的用户名
    User uxawseny 
    #使用的密钥文件
    IdentityFile ~/.ssh/is_rsa_github 
    
    ##############公司git################
    
    #网站的别名,随意取
    Host git.cp.com
    #托管网站的域名
    HostName git.cp.com
    #托管网站上的用户名
    User myname 
    #使用的密钥文件
    IdentityFile ~/.ssh/id_rsa_cp
    
    这里的host name最好和git服务器的SSH下载方式上的
    git@github.com:uxawseny/test.git  
    @符号后面的一直,这样每次clone时就默认不用手动更改了,
    比如github的ssh key的host name,就命名为github.com

6.公钥添加到托管网站

    将公钥id_rsa_github.pub中的内容复制到github

7.测试是否成功

这时候,可以测试一下配置是否成功,测试命令使用别名。例如,对于GitHub,本来应该使用的测试命令是:

    ssh -T git@github.com

8.选择SSH协议的复制命令,如对于GitLab上代码库test,其复制命令为

    git clone git@github.com:ux/test.git

9.添加其他git账户依次操作即可

10.做完这些后几个清除全局用户名和邮箱,否则不同仓库提交时的用户名和邮箱信息都是一样的。

    git config --global --unset user.name
    git config --global --unset user.email
    
    用上述命令清除掉全局用户名和邮箱信息后,再在每个项目中设置用户名和邮箱信息(不使用全局参数)
    git config --unset user.name
    git config--unset user.email
    
    或者在IDEA中提交时再填写用户名和邮箱,但是要记得取消勾选"作为全局设置"
  • 参考文章

https://www.jianshu.com/p/6507ce357ad2

github项目fork之后实时同步原项目的更新

1.将fork到的项目git clone拉取到本地

2.进到拉取的project目录下,然后增加远程分支(fork的原始项目地址),名为 update_new(名字任意)到本地

git remote add update_new https://github.com/_original/_project.git

3.查看分支时候添加成功(会发现多了刚才添加的远程分支)

git remote -v

4.然后把远程原始分支 update_new 的代码拉到本地

git fetch update_new

5.合并对方远程原始分支 update_new 的代码

git merge update_new/master    

6.最后把最新的代码推送到你的github上

git push origin master
  • 参考文章

    https://www.cnblogs.com/relucent/p/6479213.html

    修改远程仓库地址

  • 1.直接修改远程仓库地址【推荐】

      git remote set-url origin url
      
      修改完后,如果是master分支,第一次推送,可以直接:git push -u origin master
      其他分支,在主分支推送后,修改完地址后,可以直接push
    
  • 2.删除本地远程仓库地址,然后添加新的仓库地址

      git remote rm origin
      git remote add origin url
    
  • 3.修改配置文件

      每个仓库在初始化时,都会有一个 .git 的隐藏目录,修改其中的 config 文件中的 url
    

Git分支重命名

  • 1.本地分支重命名

    1
    git branch -m oldName  newName
  • 2.将重命名后的分支推送到远程

    1
    git push origin newName
  • 3.删除远程的旧分支

    1
    git push --delete origin oldName

Git多仓库推送

  • 推送到多个仓库

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    git remote set-url --add origin https://xxxxx.git

    命令提示:
    usage: git remote set-url [--push] <name> <newurl> [<oldurl>]
    or: git remote set-url --add <name> <newurl>
    or: git remote set-url --delete <name> <url>

    --push manipulate push URLs
    --add add URL
    --delete delete URLs

Git日志

  • 根据日志进行检出操作等

    1
    2
    3
    4
    1.查看提交记录
    git reflog
    2.检出到指定记录
    git checkout b743fd3

参考地址:

https://www.jianshu.com/p/0b4c349d6251