前期准备

  • 安装Git
  • 准备仓库

准备仓库

准备仓库的方式有2种,在Github上Create自己的仓库或Fork他人已有的仓库

Create仓库

  • 打开Github,点击左侧New新建仓库;
  • 输入相关信息,点击Create repository创建。

Fork仓库

  • 打开目标仓库。如:test仓库
  • 点击右上角的Fork按钮,将项目复制到个人帐号下。

克隆仓库

克隆仓库的方式也有2种,分别是HTTPSSSH

HTTPS

  • 进入到本地仓库目录,右键打开Git Bash
  • 进入Github个人仓库,点击Clone or download,复制仓库地址
  • Clone个人仓库到本地

    $ git clone https://github.com/账号名/test.git
  • 进入仓库

    $ cd test
  • 将改动文件添加到缓存区

    $ git add .    # 添加全部改动文件到缓存区
    $ git add <file_name>    # 将指定文件添加到缓存区
    $ git rm --cached <file_name>  # 将指定文件移除缓存区
    
    $ git status  # 查看状态
    # Untracked files->即某个文件还没有被跟踪,还没有提交到git仓库里
    # Changes to be committed -> 文件等待被提交
  • 填写提交记录

    $ git commit -m "注释" # 将缓存区的提交至仓库,提交一次后再git status会看到nothing to commit
  • 提交代码

    $ git push  # 提交代码,按提示输出github账号密码
  • 若第一次提交时出现错误提示,则需配置全局账号密码及邮箱地址,然后重新提交。

    $ git config --global user.name '账号'
    $ git config --global user.password '密码'
    $ git config --global user.email '邮箱地址'
  • 此时,在Github上的个人仓库刷新即可新提交的文件。
  • 注:使用HTTPS方式时,每次提交都需要输入账号密码,但通过修改配置文件可直接提交。打开仓库目录下.git/config,修改url。注意.git目录为隐藏目录,需设置显示隐藏的目录。

    # url = https://github.com/账号/test.git
    url = https://账号:密码@github.com/fengkkk/test.git

SSH

  • 进入到本地仓库目录,右键打开Git Bash
  • 进入Github个人仓库,点击Clone or download,复制仓库地址
  • Clone个人仓库到本地

    $ git clone git@github.com:账号名/test.git
  • 进入仓库

    $ cd test
  • 生成SSH Key

    $ ssh-keygen -t rsa
    
    # Generating public/private rsa key pair.
    # Enter file in which to save the key (/c/Users/Feng/.ssh/id_rsa):
    # 直接回车,括号内为你的SSH Key密钥文件存放路径
    
    # 备注:
    # 指定rsa算法生成密钥,生成两个文件:公钥id_rsa.pub和密钥id_rsa
    # Linux/Mac 系统  ~/.ssh
    # win系统 C:\Users\username\.ssh
  • 打开SSH Key存放路径(如/c/Users/Feng/.ssh/),并使用文本编辑器打开公钥文件id_rsa.pub,复制全部内容。
  • 打开Github>设置页面,点击左侧SSH and GPG keys,再点击New SSH key。随便填写Title,然后将公钥文件内容粘贴进入Key。
  • SSH key添加成功后,一般会有邮件提醒,另外也可以测试一下。添加完SSH Key后即可按照正常流程提交代码,无需输入密码。

    $ ssh -T git@github.com
    # Hi fengkkk! You've successfully authenticated, but GitHub does not provide shell access.
    
  • 将改动文件添加到缓存区

    $ git add .    # 添加全部改动文件到缓存区
    $ git add <file_name>    # 将指定文件添加到缓存区
    $ git rm --cached <file_name>  # 将指定文件移除缓存区
    
    $ git status  # 查看状态
    # Untracked files->即某个文件还没有被跟踪,还没有提交到git仓库里
    # Changes to be committed -> 文件等待被提交
  • 填写提交记录

    $ git commit -m "注释" # 将缓存区的提交至仓库,提交一次后再git status会看到nothing to commit
  • 提交代码

    $ git push  # 提交代码,按提示输出github账号密码

Git常用指令

$ git init   # git初始化

$ git status # 查看状态
# Untracked files->即某个文件还没有被跟踪,还没有提交到git仓库里
# Changes to be committed -> 文件等待被提交

$ git add    # 添加到缓存区
$ git rm --cached # 移除缓存
$ git commit -m "注释" # 将缓存区的提交至仓库,提交一次后再git status会看到nothing to commit

$ git log # 查看所有产生的commit记录
$ git add & git commit # 直接提交

$ git branch # 提交到分支
$ git checkout test2 # 切换到分支test2
$ git checkout -b test2 # 新建一个test2分支,并且自动切换该分支

$ git merge test2  # 将test2分支合并进当前分支

# 有些时候可能会删除失败,比如test2分支的代码还没有合并到master,-d是删除不了的。
# 但如果非要删除,那就执行-D强制删除
$ git branch -d test2 # 删除分支test2
$ git branch -D test2 # 强制删除分支test2

$ git tag v1.0 #在当前代码状态下新建了一个标签v1.0

$ git pull origin master  # 把远程最新的代码更新到本地
$ git push origin master  # 把本地代码推到远程master分支

# 一般先pull再push,这样不容易冲突。

提交项目给原作者

  1. Fork项目到自己仓库;
  2. git clone自己仓库中刚Fork的项目
  3. 本地修改,然后将本地项目提交到自己的仓库

    $ git add -A  # 添加全部
    $ git commit -m '更新日志'
    $ git push   # 提交到服务器
  4. 然后在仓库Pull request中可以看到自己的提交;
  5. 最后点击Create pull request,填写注释后提交,等待作者确认即可。

Q&A

  1. git add . 的时候遇到warning: LF will be replaced by CRLF in .....

    # warning: LF will be replaced by CRLF in ......  
    # The file will have its original line endings in your working directory.
    # 原因: 路径中存在 / 的符号转义问题,false就是不转换符号默认是true,相当于把路径的 / 符号进行转义,这样添加的时候就有问题
    
    $ git config --global core.autocrlf false
     
    
  2. 修改全局配置

    $ git config --global user.name 'name'
    $ git config --global user.password 'password'
    $ git config --list
    

其它

廖雪峰Git教程

猴子都能懂的Git入门

SourceTree企业版

如果觉得我的文章对你有帮助,请我吃颗糖吧~