git系统学习笔记

git学习笔记

前言

集中式版本控制系统可使管理员轻松掌控每个开发者的权限,但在工作时显而易见的缺点是中央服务器的单点故障。 而分布式的版本控制系统在服务器断网的情况下也可以进行开发,每个客户端保存的也都是整个完整的项目。

一、初次安装git所需操作

git官网点击跳转
下载完成后,随便在某个文件下右键如果有Git Bash Here就表示安装成功。

二、使用介绍

1.创建仓库

Git 首次安装必须设置一下用户签名,否则无法提交代码。选择一个合适的地方创建一个空文件夹,并在此文件夹中右键点击Git Bash Here打开git命令窗口在命令行输入:

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

global表示全局,这台机器所有的Git仓库都将使用这个配置。允许单个仓库使用其他的名字和邮箱。
通过git init命令把这个目录变成Git可以管理的仓库:

$ git init

在当前目录中会多一个 .git 的目录,这个目录是Git来跟踪管理版本库的,如果改乱了,就可能把Git仓库给破坏了。其中,Git是无法追踪图片、视频等二进制文件的改动的。
通过 git add 命令将文件添加到版本区(暂存区):

$ git add .   //此命令是将该 工作区中 文件夹全部提交到暂存区
$ git add hello.text   //此命令是将该 工作区中 hello.text 提交到暂存区

通过 git commit 命令将文件添加到版本区(仓库区):

$ git commit -m "提交说明"   //此命令是将该文件夹全部提交到版本区

在 -m 后面输入的是本次提交的说明,方便自己以后从历史记录里找到改动记录
注意:
git add < file > ,可以反复多次使用,添加多个文件夹;
git commit -m “提交说明” ,可以一次提交很多文件。

通过 git status 命令可以将该 工作区中 当前状态展现出来:

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

	modified:   readme.txt

no changes added to commit (use "git add" and/or "git commit -a")

此内容表示 工作区中 版本有所改动,但 Git 未对该文件进行跟踪。需要通过 $ git commit 将文件添加到 仓库区 中进行跟踪。
通过 git diff 命令可以将该 工作区中 当前具体修改内容告诉我们:

$ git diff

2. 历史版本

通过 git reflog 命令可以查看历史版本信息:

Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (master)
$ git reflog
087a1a7 (HEAD -> master) HEAD@{0}: commit: my third commit
ca8ded6 HEAD@{1}: commit: my second commit
86366fa HEAD@{2}: commit (initial): my first commit

其中,HEAD指针 指向为当前版本分支 master 为默认主分支。087a1a7、ca8ded6、86366fa分别为三次改动版本的版本号。
通过 git log 命令可以查看版本详细信息:

$ git log

通过 git reset --hard 版本号 命令可以进行版本穿梭:

$ git reset --hard 版本号

其原理是: 改变 Git 内部 HEAD指针 的指向,而你让 HEAD 指向哪个版本号,便把当前版本定位在哪且工作区中的文件也会更新为此版本内容。

┌────┐
│HEAD│
└────┘
   │
   └──> ○ append GPL
        │
        ○ add distributed
        │
        ○ wrote a readme file      

改为指向 add distributed:

┌────┐
│HEAD│
└────┘
   │
   │    ○ append GPL
   │    │
   └──> ○ add distributed
        │
        ○ wrote a readme file        

如若想退回到某个版本,可以通过命令 git reflog 查看命令历史,以便确定要回到未来的哪个版本(获取 该版本的 版本号 )。确定所退回版本之后再通过 git reset --hard 版本号 命令便可重返未来。

通过 git checkout – file 命令可以用来撤销对工作区中文件的修改:

$ git checkout -- file

在工作区,你修改了一个东西,但你想撤销修改,便可以通过该命令撤销修改就回到和版本库一模一样的状态,即用版本库里的版本替换工作区的版本,无论工作区是修改还是删除都可以“一键还原”。

3. 工作区、版本区和远程仓库

Git 存储关系图
工作区就是你在电脑里能看到的目录,比如文件夹中的 Hello.text 文件;版本区 为工作区中一个隐藏目录 .git ,这个不算工作区而是 Git 的 版本区。
在 版本区 中拥有两个区即:暂存区与仓库区,只有提交到仓库区的文件才会被 Git 跟踪记录。

本地仓库是对于远程仓库而言的。
本地仓库 = 工作区 + 版本区
工作区即磁盘上的文件集合。
版本区(版本库)即.git文件
版本库 = 暂存区(stage) + 分支(master) + 指针Head

前面讲了我们文件往Git版本库里添加的时候,是分两步执行的:
第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

4. Git 分支操作

分支解释图
使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。同时并行推进多个功能开发,可以提高开发效率。同时,各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。分支
通过 git branch -v 命令可以查看所有分支:

Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (master)
$ git branch -v
* master 087a1a7 my third commit (*代表当前所在的分区)

通过 git branch 分支名 命令可以创建分支:

Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (master)
$ git branch hot-fix
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (master)
$ git branch -v
hot-fix 087a1a7 my third commit (刚创建的新的分支,并将主分支 master的内容复制了一份)
* master 087a1a7 my third commit

分支之间的操作互不影响。

通过 git checkout 分支名 命令可以切换分支:

Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (master)
$ git checkout hot-fix
Switched to branch 'hot-fix'
//发现当先分支已由 master 改为 hot-fix
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (hot-fix)
$

通过 git merge 分支名 命令可以合并分支:

$ git merge hot-fix

产生冲突

冲突产生的原因:
合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git 无法替
我们决定使用哪一个。必须人为决定新代码内容。

解决冲突

编辑有冲突的文件,删除特殊符号,决定要使用的内容

特殊符号:<<<<<<< HEAD 当前分支的代码 ======= 合并过来的代码 >>>>>>> hot-fix

在解决冲突之后可再执行添加到暂存区 $ git add 操作,并执行提交(注意:此时使用 git commit 命令时不能带文件名)

5. 远程仓库操作

在将文件添加到仓库区之后的操作便是,将仓库区的文件提交到远程仓库里。
通过 git remote add 别名 远程地址 命令可以创建远程仓库别名:

$ git remote add origin https://github.com/name/name_cangku.git

表示把你本地的仓库与GitHub上的远程仓库连接起来。只需要连接一次,以后提交的时候就可以不用写这条命令了。name是你的github名字,name_cangku是你的仓库名。注意不要把后面的.git给漏掉了!

通过 git remote -v 命令可以创建远程仓库别名:

Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (master)
$ git remote -v
origin https://github.com/name/name_cangku.git (fetch)
origin https://github.com/name/name_cangku.git (push)
ori https://github.com/atguiguyueyue/git-shTest.git (fetch)
ori https://github.com/atguiguyueyue/git-shTest.git (push)

这里有两个远程库,在推送本地分支到远程仓库时可以根据别名来区分远程仓库。

通过 git clone 远程地址 命令可以克隆远程仓库到本地:

$ git clone https://github.com/atguiguyueyue/git-shTest.git

注意:clone 会做如下操作。1、拉取代码。2、初始化本地仓库。3、创建别名

push操作

通过 git push 别名 分支 命令可以推送本地分支到远程仓库:

$ git push origin master

1、将 本地当前分支 推送到 远程指定分支 上(注意:pull是远程在前本地在后,push相反):

$ git push origin <本地分支名>:<远程分支名>

2、将 本地当前分支 推送到 与 本地当前分支 同名的远程分支上:

$ git push origin <本地分支名>

pull操作

通过 git pull 远程库地址别名 远程分支名 命令可以将远程仓库对于分支最新内容拉下来后与
当前本地分支直接合并:

$ git pull origin master

1、将 远程指定分支 拉取到本地指定分支上:

$ git pull origin <远程分支名>:<本地分支名>

2、将远程指定分支 拉取到 本地当前分支 上:

$ git pull origin <远程分支名>

6. 在项目提交时 Git 应当执行的操作流程

$ git stash save '注释内容'
	//能够将所有未提交的修改(工作区和暂存区)保存至堆栈中,用于后续恢复当前工作目录。
	//注意,这只能暂存已经tracked的文件,即已经提交过的文件,而新加的文件则还是不能暂存成功
$ git pull origin develop
	//从远程仓库拉去最新代码
$ git stash show
	//查看堆栈中最新保存的stash和当前目录的差异。
$ git stash pop
	//将当前stash中的内容弹出,并应用到当前分支对应的工作目录上。注:该命令将堆栈中最近保存的内容删除
	//(栈是先进后出)
$ git add .
	//将工作区代码添加至暂存区
$ git commit -m 
	//将暂存区代码添加至本地仓库进行跟踪
$ git push origin HEAD:xxx
	//将本地代码推去到远程仓库

7. Git界面年粘贴/复制快捷键

ctrl/shift + Ins 键

8. Git忽略文件操作

#为注释
*.txt        #忽略所有 .txt结尾的文件,这样的话上传就不会被选中!
!lib.txt     #但lib.txt除外
/temp        #仅忽略项目根目录下的TODO文件,不包括其它目录temp
build/       #忽略build/目录下的所有文件
doc/*.txt    #会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

9. 常用的Linux命令

平时常用命令:

1)、cd : 改变目录。

2)、cd . . 回退到上一个目录,直接cd进入默认目录

3)、pwd : 显示当前所在的目录路径。

4)、ls(ll):  都是列出当前目录中的所有文件,只不过ll(两个ll)列出的内容更为详细。

5)、touch : 新建一个文件 如 touch index.js 就会在当前目录下新建一个index.js文件。

6)、rm:  删除一个文件, rm index.js 就会把index.js文件删除。

7)、mkdir:  新建一个目录,就是新建一个文件夹。

8)、rm -r :  删除一个文件夹, rm -r src 删除src目录rm -rf / 切勿在Linux中尝试!删除电脑中全部文件

9)、mv 移动文件, mv index.html src index.html 是我们要移动的文件, src 是目标文件夹,当然, 这样写,
必须保证文件和目标文件夹在同一目录下。

10)、reset 重新初始化终端/清屏。

11)、clear 清屏。

12)、history 查看命令历史。

13)、help 帮助。

14)、exit 退出。

15)、#表示注释

提示:本人编写为原创,内容如有问题欢迎指正

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值