Git学习笔记

Git学习笔记

git下载

git下载(需连接内网)

创建版本库

创建一个空白文件夹,并进入文件夹,或在文件夹位置打开git-bash

初始化文件夹,使文件夹可以被git管理

$git init

注意事项:

  1. 只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码,例如word是二进制编码,无法记录更改,图片只能确定改动的大小。
  2. 注意编码格式,各种文本编码格式最好统一使用UTF-8。
  3. windows下最好不要使用默认记事本打开文本文档(默认在文件开头加了一个十六进制字符,导致一些问题,例如网页第一行可能会出现一个"?",文本文档可能显示不全等),最好下载一个Notepad++代替记事本。

Notepad++下载(需连接内网)

把文本添加到版本库

$ git add readme.txt  //向暂存区添加文件
$ git commit -m "wrote a readme file(大于10个字符)" //提交文件并添加注释

git工作

撤销更改

$ git checkout -- readme.txt
// 如果本地分支有了修改,但想丢弃修改。(文件内容的修改)

注意:从来没有被添加到版本库就被删除的文件,是无法恢复的!

版本回退

$ git log  //查看历史操作信息
commit 1094adb7b9b3807259d8cb349e7df1d4d6477073 (HEAD -> master)
Author: *** *** <***@gmail.com>
Date:   Fri May 18 21:06:15 2018 +0800

append GPL

commit e475afc93c209a690c39c13a46716e8fa000c366
Author: *** *** <***@gmail.com>
Date:   Fri May 18 21:03:36 2018 +0800

add distributed

commit eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0
Author: *** *** <***@gmail.com>
Date:   Fri May 18 20:59:18 2018 +0800

wrote a readme file

commit 1094adb7b9b3807259d8cb349e7df1d4d6477073 :commi id 由SHA1计算出来的版本号(确保多人协作同一文件时,版本id不会冲突)

$ git reset --hard HEAD^ //回退到上一个版本

$ git reset --hard 1094a //回退到指定版本(只需输入commi id中前几位,git会自己去找)

$ git commit -m "wrote a readme file(大于10个字符)" //提交文件及注释

穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。

要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

分支管理

每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。

当我们创建新的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上:

$ git checkout -b dev
Switched to a new branch 'dev'

$ git branch dev
$ git checkout dev
Switched to branch 'dev'
$ git checkout dev
Switched to branch 'dev'

在这里插入图片描述

用git branch命令查看当前分支:

$ git branch
* dev
  master

新提交一次后,dev指针往前移动一步,而master指针不变:

$ git add readme.txt 
$ git commit -m "branch test"
[dev b17d20e] branch test
1 file changed, 1 insertion(+)

在这里插入图片描述

切换回master分支后,再查看一个readme.txt文件,刚才添加的内容不见了!因为那个提交是在dev分支上,而master分支此刻的提交点并没有变:

$ git checkout master
Switched to branch 'master'

在这里插入图片描述

git merge命令用于合并指定分支到当前分支。

$ git merge dev
Updating d46f35e..b17d20e
Fast-forward
readme.txt | 1 +
1 file changed, 1 insertion(+)

在这里插入图片描述

删除dev分支就是把dev指针给删掉,删掉后,我们就剩下了一条master分支:

$ git branch -d dev
Deleted branch dev (was b17d20e).

在这里插入图片描述

解决冲突

合并分支可能会出现冲突。必须手动解决冲突后再提交:

$ git merge feature1
Auto-merging readme.txt
CONFLICT (content): Merge conflict in readme.txt
Automatic merge failed; fix conflicts and then commit the result.

git status也可以告诉我们冲突的文件:

$ git status
On branch master
Your branch is ahead of 'origin/master' by 2 commits.
  (use "git push" to publish your local commits)

从主分支上取出文件,在文件的基础上新增自己的修改,完成后,再次提交:

$ git add readme.txt 
$ git commit -m "conflict fixed"
[master cf810e4] conflict fixed

在这里插入图片描述

远程仓库

1.从远程仓库获取项目代码:

在本地仓库目录下打开git-bash:

git clone: 首次复制项目到本地仓库

$git clone http://10.102.55.3/zsm/zsm-backend.git

git pull:合并远程仓库的项目

$git pull
Already up to date.

2.上传项目代码到远程仓库:

$ git push -u origin master
Counting objects: 20, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (15/15), done.
Writing objects: 100% (20/20), 1.64 KiB | 560.00 KiB/s, done.
Total 20 (delta 5), reused 0 (delta 0)
remote: Resolving deltas: 100% (5/5), done.
To github.com:michaelliao/learngit.git
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.

加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

	$ git push   // 将本地分支推送到远程分支,需要输入git账号密码。按照提示操作即可。

使用标签

1.创建标签:
在Git中打标签非常简单,首先,切换到需要打标签的分支上:

$ git branch
* dev
  master
$ git checkout master
Switched to branch 'master'

然后,敲命令git tag 就可以打一个新标签:

$ git tag v1.0

可以用命令git tag查看所有标签:

$ git tag
v1.0

给指定的commit操作打标签:

$ git tag v0.9 f52c633 
//f52c633为conmmit操作对应的commit_id,可以通过git log 查询

标签管理

git push origin <tagname>  //可以推送一个本地标签;

git push origin --tags  //可以推送全部未推送过的本地标签;

git tag -d <tagname>  //可以删除一个本地标签;

git push origin :refs/tags/<tagname>  //可以删除一个远程标签。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值