参照自:
git reset三种模式
git reset使用和回滚
几款常用的git图形化工具
菜鸟教程
常用git命令清单
https://www.cnblogs.com/lsgxeva/p/8540485.html

1,常规
cd desktop
cd cloneGitST   
echo "第一行" >> test.txt    
git init
git add test.txt   /git add --all
git commit -m "first commit"
git remote add origin git@github.com:yorkfu2017/ts.git  #添加远程仓库origin 
git push -u origin master                               #向远程仓库推送代码
git pull                                                #拉取代码
git clone git@github.com:yorkfu2017/ts.git              #从远程仓库克隆代码

git status   #查看状态
git log  #获得所有提交的历史记录,并且可以获得对应的哈希值
wq    #退出
git config --list /git config -l   #查看配置信息  注意git 提交的用户名和密码 就是你在config中设置的用户名和密码。

git config --global user.email “you@example.com”
git config --global user.name “Your Name”

git remote show origin  #查看远程仓库的详细信息

git vim命令 , 具体vim命令点击查看

vim <path +/filename> :进入或者创建 filename文件。   

git diff 我感觉大概了解下好了,真正使用的时候,还是用图形化界面工具比如sourceTree吧

a、查看尚未暂存的文件更新了哪些部分,不加参数直接输入
    git diff
    
此命令比较的是工作目录(Working tree)和暂存区域快照(index)之间的差异
也就是修改之后还没有暂存起来的变化内容。
 
b、查看已经暂存起来的文件(staged)和上次提交时的快照之间(HEAD)的差异
    git diff --cached
    git diff --staged
c、显示工作版本(Working tree)和HEAD的差别
    git diff HEAD
 
 
d、直接将两个分支上最新的提交做diff
    git diff topic master 或 git diff topic..master
 
e、输出自topic和master分别开发以来,master分支上的changed。
    git diff topic...master
f、查看简单的diff结果,可以加上--stat参数
    git diff --stat
 
g、查看当前目录和另外一个分支的差别
    git diff test
h、比较上次提交commit和上上次提交
    git diff HEAD^ HEAD
 
i、比较两个历史版本之间的差异
    git diff SHA1 SHA2
2,提交代码到远程仓库

首先要搞定与远程github的用户验证问题。使用ssh key 的验证方式。如果是sourceTree,就需要在
======== 工具》选项中修改 默认加密方式 为OpenSSH。
本地 Git 仓库和 GitHub 仓库之间的传输是通过SSH加密的,所以我们需要配置验证信息:
使用以下命令在本地生成 SSH Key:
ssh-keygen -t rsa -C "youremail@example.com"
后面的 your_email@youremail.com 改为你在 Github 上注册的邮箱,之后会要求确认路径和输入密码,我们这使用默认的一路回车就行。成功的话会在 ~/ 下生成 .ssh 文件夹,进去,打开 id_rsa.pub,复制里面的 key。 然后在github上创建ssh key ,并且粘贴,然后我们本地仓库就可以根据SSH URL地址去访问github了。

#提交代码到远程仓库,应该是先拉取代码,然后呢别人提交的一些代码可
#能和我的有冲突,修复这些冲突之后,再去提交(借鉴勿怪啊。。)
git pull origin master       
git push origin master
3,分支管理
git branch                           #查看分支
git branch -a                        #查看所有分支,包括远程和本地
git branch name                      #创建分支
git checkout name                    #切换分支到name
git checkout -b name                 #创建一个新的分支并且立即切换到它
git merge name                       #在分支master上合并分支name
git branch -d name                   #删除本地分支name
git push origin --delete name        #删除远程分支  
4,一些理解

4.1 我们首先要知道git 的三棵树。
在这里插入图片描述
Working Tree 当前的工作区域
Index/Stage 暂存区域,和git stash命令暂存的地方不一样。使用git add xx,就可以将xx添加近Stage里面
Repository 提交的历史,即使用git commit提交后的结果。

4.2 然后要理解git 的一些常用命令的原理。

在这里插入图片描述

在这里插入图片描述

5,git reset的三种模式及其应用

以下内容来自 https://blog.csdn.net/edric1261234/article/details/82796506

5.1 --soft

仅仅移动当前Head指针,不会改变工作区和暂存区的内容
在这里插入图片描述
5.2 --mixed

是reset的默认参数,移动head指针,改变暂存区内容,但不会改变工作区
在这里插入图片描述

5.3 --hard
当前head指针、工作区和暂存区内容全部改变 。
在这里插入图片描述

git reset --mixed HEAD^^  / git reset --mixed HEAD~2 #向前回滚两个commit 
git reset --mixed HEAD   #回滚到本地最后一次提交成功的commit。
git reset --mixed commit_id   #回滚到对应的commit_id。

回滚就分为以下三种 情况。
a,工作区修改完,还没执行 git add

git checkout test.txt 

b,使用git add 提交到暂存区,还未commit之前

git reset --mixed HEAD /git reset --mixed last_commit_id  # last_comit_id 替换为最后一次commit的ID号
git check out test.txt 

或者直接使用 
git reset --hard HEAD /git reset --hard last_commit_id   # last_comit_id 替换为最后一次commit的ID号

c,已经git commit,还未git push

git reset --hard origin/master  #从远程仓库把代码取回来,然后覆盖本地仓库、本地暂存区和工作区  

或者使用
 git reset --hard last_commit_id  #  覆盖本地仓库、暂存区和工作区
 
或者使用
git reset --mixed last_commit_id  # last_comit_id 替换为最后一次commit的ID号
git check out test.txt 

d,已经git push
也就是你的代码已经上传到公共服务器了,大概可以在服务器上回滚吧。

6 ,git 标签管理

通常,发布一个版本时,会在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。

git tag  /  git tag -l         #查看所有标签
git tag v1.0.1                 #创建标签    切换到需要打标签的版本,然后输入 git tag name就可以打上标签
git tag -a v1.0 -m "描述"      #创建标签 并且添加描述

git push origin v1.0.1         #标签发布到远程仓库
git push origin --tags         #一次性推送全部尚未推送到远程的本地标签

git tag -d v1.0.1              #删除标签

git tag -d v1.0.1     git push origin v1.0.1  # 这两个命令加起来就是删除远程标签

Git中不能真的检出一个标签,因为他们并不能像分支一样来回移动。如果想要工作目录与仓库中特定地标签版本完全一致,可以使用git checkout -b [分支名] [标签名]在特定地标签上创建一个新分支

 git checkout  v1.0.1       #可以取得该 tag 对应的代码
 git checkout master        #切回master分支
 
但是,这时候 git 可能会提示你当前处于一个“detached HEAD" 状态。
因为 tag 相当于是一个快照,是不能更改它的代码的。如果要在 tag 
代码的基础上做修改,你需要一个分支:
git checkout -b branch_name v1.0.1  
7,常用git图形化软件

1,GitHub for Desktop

2,Source Tree
SourceTree是老牌的Git GUI管理工具了,也号称是最好用的Git GUI工具。我的体验是确实强大,功能丰富,基本操作和高级操作都设计得非常流畅,适合初学者上手。git flow是一大特色。
3,TortoiseGit
对这只小乌龟估计没有开发人员会不认识,SVN的超广泛使用也使得这个超好用的Svn客户端成了几乎每个开发人员的桌面必备软件。小乌龟只提供Windows版本,提供中文版支持的,对于中国的开发者来说者绝对是福音。
4,visual studio自带的git集成扩展

8,在一台设备的visual studio中配置git环境
1,下载msysGit并安装
2,下载TortoiseGit并安装
3,在visual studio扩展工具中 搜索Tgit并且安装。

配置svn相似,下载 visual svn for vistudio, visual studio ,tortoise svn这三个 安装就可以了。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐