1. 配置git客户端

1.1 安装git bash

https://git-scm.com/downloads

1.2 设置ssh Key

查看是否有ssh key

ls -al ~/.ssh

没有则生成ssh key

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

将生成的公钥 (.pub为后缀) 上传到git网站上

eval $(ssh-agent -s) //确定ssh-agent正在运行

ssh-add ~/.ssh/id_rsa //添加ssh私钥到客户端

ssh git@github.com //测试

1.3 设置用户名和邮箱

git config --global user.name "NAME HERE"
git config --global user.email "aaa@qq.com"

2. 管理项目

2.1 本地已有项目

在项目的目录下执行以下命令(git bash)初始化仓库

git init

项目下会多出.git文件夹(默认隐藏)

将项目与远程仓库关联

git remote add origin git@github.com:arcsinW/OpenHelloCDUTUWP.git

git remote -v # 查看远程仓库

提交更改

git add .
git commit -a -m "Initial commit"
git push origin master

或者

git add .
git commit -a # 接着在git bash 里的文本编辑器里写Commit message
git push origin master

2.2 从远程仓库获取项目

git clone https://github.com/libgit2/libgit2 //获取master分支

git clone -b dev https://github.com/libgit2/libgit2 // 获取dev分支

2.3 分支

git checkout -b dev # 新建并切换到dev分支

git branch # 查看本地分支

git branch -a # 查看远程分支

git checkout master # 切换到master分支

git merge dev # 合并dev分支到当前分支

git branch -d dev # 删除dev分支

git push origin --delete dev # 删除远程dev分支

git checkout -b dev origin/dev # 从远程仓库拉取本地不存在的dev分支

下图是在当前分支为signle_edition时执行git merge master时出现冲突的情况,IDE是VS Code

<<<<<<< HEAD 到 =======的部分是当前分支single_edition的版本

======= 到 >>>>>>> master是master中的版本

处理冲突就是手动选择保存哪个版本的代码

处理好冲突后,使用add将该文件标记为已解决状态

git add filename

2.4 版本控制

git rm --cached readme.txt # 将文件untrack,不删除文件

git rm readme.txt # 将文件untrack并删除

git log --pretty=oneline # 查看提交日志

git --no-pager log # log不分页

git reset --hard HEAD^ # 回退到上一commit

git reset --hard [commit_id] # 回退到指定commit,commit_id只需写前几位,能唯一确定这个commit即可

3. some solutions

  • refusing to merge unrelated histories

加上--allow-unrelated-histories

git pull origin master --allow-unrelated-histories
  • 修改提交到远程仓库的commit信息

查看本地仓库的log信息,找到要修改的commit之前一个commit的id

git log --pretty=oneline
git rebase -i [commit_id]

将要修改的commit信息前的pick改成edit

git commit --amend #修改commit信息
git rebase --continue
git push -f origin master #覆盖远程仓库commit信息(也会覆盖其他人的提交)
  • 重新添加 .gitignore
git rm -r --cached .
git add .
git commit -m "add .gitignore file"
  • 查看版本控制下的文件
git ls-files
  • git stash

当你想切换分支,但工作区还有未提交的代码,而这个代码还没写完不想提交,这时候可以把当前的工作状态暂时存储起来

git stash  // 存储当前的变更

git status // 工作区此时clean了

git stash list // 查看所有的stash

git stash apply stash@{0} // 恢复stash@{0}这个stash(由上一步获得)

git stash show -p stash@{0} | git apply -R // 取消一个stash

git stash branch testchanges // 在新分支中查看stash

Reference

  1. https://git-scm.com/docs/
  2. git提交commit后push到远程仓库,如何修改commit信息

[Git] Git 使用记录的更多相关文章

  1. Git 仓库和记录操作到仓库

    Git 配置好了,来 clone 个或者新建个仓库来试试, $ git clone git@github.com:git/git.git 把 Git 的源码克隆下来,克隆会自动创建本地仓库,并创建本地 ...

  2. 『GitHub』Git常用命令记录

    Commands: git init 把当前目录变成Git可以管理的仓库 随后出现.git目录,这个目录是Git来跟踪管理版本库的git commit -m "change message& ...

  3. GIT初始学习记录

    目录 GIT学习记录 配置github与gitlib两个账号 基本操作 git init:初始化仓库 git status:查看仓库状态 git add :向缓存区中添加文件 git commit 保 ...

  4. git 跟踪提交记录

    一.克隆git仓库 git clone ssh://hwl@xxx/home/data/repositories/git.git 二.申明使用人信息,以便跟踪提交记录 $ git config --g ...

  5. 【Git】学习记录

    配置git git config --global user.name "用户名或者用户ID" git config --global user.email "邮箱&qu ...

  6. git使用方法记录

    git是一个分布式的代码版本管理系统,使用起来的确很方便,已签只会star别人的项目,今天刚好有空抽点时间学了一下,简单的几个命令的用法. 首先在giuhub上可以托管代码,然后可以将远程仓库拖到本地 ...

  7. 规范git commit提交记录和版本发布记录

    在开发过程中我们一般都会用到git管理代码,在git commit提交代码时我们一般对git commit message随便写点简单的描述,可是随着项目参与人数的增多,发现提交的commit记录越来 ...

  8. Git原理学习记录

    Git原理学习记录 1.git init git-test ​ git init 实际上就是在特定的目录下创建对应的目录和文件 2.object $ echo "V1" > ...

  9. [skill][git] git 常用操作记录

    傻瓜入门: step by step : https://try.github.io/levels/1/challenges/1 一本书: https://git-scm.com/book/en/v2 ...

  10. 【转帖】Git学习笔记 记录一下

    本文内容参考了廖雪峰老师的博文,并做了适当整理,方便大家查阅. 原帖地址 https://wangfanggang.com/Git/git/ 常用命令 仓库初始化 - git init 1 git i ...

随机推荐

  1. 求树的重心 DFS

    树的重心 何谓重心 树的重心:找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心,删去重心后,生成的多棵树尽可能平衡. 树的重心可以通过简单的两次搜索求出,第一遍搜索求出每个结 ...

  2. poj - 1860 Currency Exchange Bellman-Ford 判断正环

    Currency Exchange POJ - 1860 题意: 有许多货币兑换点,每个兑换点仅支持两种货币的兑换,兑换有相应的汇率和手续费.你有s这个货币 V 个,问是否能通过合理地兑换货币,使得你 ...

  3. 图论之拓扑排序 poj 2367 Genealogical tree

    题目链接 http://poj.org/problem?id=2367 题意就是给定一系列关系,按这些关系拓扑排序. #include<cstdio> #include<cstrin ...

  4. codeforces E. Phone Talks(dp)

    题目链接:http://codeforces.com/contest/158/problem/E 题意:给出一些电话,有打进来的时间和持续的时间,如果人在打电话,那么新打进来的电话入队,如果人没有打电 ...

  5. 【Offer】[65] 【不用加减乘除做加法】

    题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 牛客网刷题地址 思路分析 对数字做运算,除了四则运算外, ...

  6. java多线程之Executor 与 ExecutorService两个基本接口

    一.Executor 接口简介 Executor接口是Executor框架的一个最基本的接口,Executor框架的大部分类都直接或间接地实现了此接口. 只有一个方法 void execute(Run ...

  7. jumper-server-资源管理

    https://cloud.tencent.com/developer/article/1460469 此链接是百度搜索的 , 比较详细 https://www.cnblogs.com/zsl-fin ...

  8. OPC—— KepServer.ServerState返回值为3和OPCConfig.exe配置文件的根目录

    做开发没有对电脑的绝对管理员权限的问题,会出现很多意外,调试OPC是总是连接状态有时莫明返回3,提示 not configuration,问题在于: 没有以管理员权限运行OPCConfig.exe,导 ...

  9. mysql ER图

        ER 图 ER图也被称为实体-联系图,提供了表示实体类型.属性和联系的方法,下图就是典型的一张ER图. ER图主要由四个成分构成: 1 实体 实体是客观世界中存在的各种事物,或者某个抽象事件, ...

  10. Android MediaPlayer 播放音频

    本文链接: Android MediaPlayer 播放音频 主要介绍使用MediaPlayer播放音频的方式.关于MediaPlayer的基础知识,比如状态,可以参考Android MediaPla ...