git

github的各指令的使用

git整体结构说明

官网
参考

配置ssh公钥

ssh-keygen -t rsa -C “youremail@example.com” 一路下一步
/home/grq/.ssh 里面也会生成文件id_rsa与id_rsa.pub
登录GitHub,点击右上角头像,Settings -> Personal settings -> SSH and GPG keys。在SSH Keys标签右方点击New SSH Key。
弹出两个文本框。其中的Title,可以随意命名。笔者此处随便命名为grq-Ubuntu。
另一个Key文本框,需要输入刚刚生成的id_rsa.pub文件中的内容。粘贴后点击Add SSH Key,即可生成SSH Key。

git命令

1.工作目录和本地仓库

1
2
3
4
5
git init
git add file 或 git add ./ (添加全部文件)
git status #查看属于此次更新的情况
git commit -m "Update Readme Files(Version of Chinese & English)" #将缓存区的修改保存到本地仓库
git commit --amend #不创建新节点

2.添加远程仓库
首先我们应该添加一个远程仓库,命名为origin,这样随后才可以添加文件到远程库中。指令如下:

1
2
git remote add origin git@github.com:upcAutoLang/Framework-for-NACIT2017.git
git remote set-url origin git@github.com:upcAutoLang/Framework-for-NACIT2017.git

查看所有远程仓库
git remote -v

1
2
3
4
5
origin https://github.com/user2/repository.git (fetch)
origin https://github.com/user2/repository.git (push)
upstream https://github.com/user1/repository.git (push)
upstream https://github.com/user1/repository.git (push)
#origin 表示远程仓库地址的别名

在进行git add ./操作的路径中,实际上已经生成了一个隐藏的.git文件夹。在该路径下输入指令cd ./.git便进入.git文件夹,使用gedit或vim打开文件config,在文件末尾加入内容:

1
2
3
[user]
email = your email
name = your name

3.上传到远程仓库
git push -u origin main (如果出错,可能是没有readme,运行git pull origin main (第一次使用加上了-u参数,是推送内容并关联分支。)
如果要使用 git push简短提交代码:
git push
需要配置 :
git config —global push.default simple
或者:
git config —global push.default matching
区别在于,前者只提交你当前所在的分支,而后者会提交本地所有的分支。

4.版本回退
参考
git包括3个区域:
Working Tree 当前的工作区域
Index/Stage 暂存区域
Repository 提交的历史,即使用git commit提交后的结果

$ git reset --hard HEAD^ 三个区域所有的内容都被擦除,回到上一个修改前。放弃本地所有的改变。
$ git reset --soft HEAD^ 保留暂存区和工作目录,两者保持一致。中间许多频繁,不具有太大意义的提交,可以用来合并节点,减少无用提交的次数。
$ git reset HEAD^ == git reset --mixed HEAD^ 保留工作目录,清空暂存区。soft和mixed中间的区别没有太大,可以用很少的操作来互相代替,只用mixed也完全可以。

分离HEAD
可以指向任意节点,用了查看之前的版本。

1
2
3
git checkout 节点哈希值
//也可以直接脱离分支指向当前节点
git checkout --detach

5.分支
创建分支
$ git branch testing
$ git checkout -b testing #创建并切换
分支切换
$ git checkout testing
删除分支
$ git branch -d testing
合并分支
merge是最常用的合并命令,它可以将某个分支或者某个节点的代码合并至当前分支
$ git merge 分支名/节点哈希值

6.文件恢复
git checkout -- <file>
命令git checkout — README.md,把README.md文件在动作区的修改全部撤销。先从缓存区stage拉取还原,如果缓存区为空则从最近一次版本库中还原。总之,就是让文件回到最近一次git add或者git commit的状态。

7.git log
查看分支图
git log --graph --decorate --oneline --simplify-by-decoration --all
git log --graph --oneline
git log --oneline --graph --decorate --all

git配置

git忽略某个目录或者文件
在工程目录下创建一个.gitignore文件
touch .gitignore
编辑文件,添加要忽略的文件和目录

1
2
3
4
target //忽略这个target目录
*.pyc 忽略.css文件
log/* //忽略log下的所有文件
test.json //忽略这个test.json文

然后执行 git status, 就没有忽略的目录和文件了。
然后 执行 git add . , 已经没有了。

在终端通过命令创建仓库

  1. 在.zshrc中添加以下函数
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    github-create() 
    {
    if [ $1 ]
    then
    repo_name=$1
    else
    repo_name=`basename $(pwd)`
    echo "set Repo name to ${repo_name}"
    fi
    curl -u 'username:token' https://api.github.com/user/repos -d '{"name":"'$repo_name'"}'
    echo "# ${repo_name}" >> README.md
    git init
    git add README.md
    git commit -m "first commit"
    git remote add origin git@github.com:username/$repo_name.git
    git push -u origin master
    }

username是github的用户名
token需要在github中申请

在终端中执行以下命令
github-create repository-name

https 方式

其他相同,
git remote add origin https://github.com/1608295563/Machine-Learning.git
问题:每次提交都的设置用户名密码

  1. 在~/下, touch创建文件 .git-credentials, 用vim编辑此文件,输入内容格式:
    touch .git-credentials
    vim .git-credentials
    https://{username}:{password}@github.com

  2. 在终端下执行 git config —global credential.helper store

  3. 可以看到~/.gitconfig文件,会多了一项:
    [credential]
    helper = store
Contents
  1. 1. git整体结构说明
  2. 2. 配置ssh公钥
  3. 3. git命令
  4. 4. git配置
  5. 5. 在终端通过命令创建仓库
  6. 6. https 方式
|