git笔记

目录

git

设置git

设置仓库

提交文件

还原

RESET参数

github部分

github与本地关联

项目关联

代码提交

代码更新

master和main


官方网站https://git-scm.com/downloads

git

设置git

下载好后先设置账号和邮箱,账号就是个标识 ,github的contributions跟邮箱是有关联的。

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

查看设置

zhgyo@A11160721050299 MINGW64 ~/GitDemo (master)
$ git config user.name
Ascrew

zhgyo@A11160721050299 MINGW64 ~/GitDemo (master)
$ git config user.email
1311585620@qq.com

修改用户名和邮箱(为了查阅方便,之后的bash例子不再写用户目录)

$ git config --global user.name "xxx"
$ git config --global user.email "xxx"

设置仓库

打开bash,进入想要设置为仓库的目录使用命令git init,生成.git文件夹,设置成功。下面文件夹是空的给了个小提示。

$ cd GitDemo/

$ pwd
/c/Users/zhgyo/GitDemo

$ git init
Initialized empty Git repository in C:/Users/zhgyo/GitDemo/.git/

$ ls -a
./  ../  .git/

提交文件

使用 add 将文件先加入到git缓存区中,在使用 commit 正式提交到库,commit 后面加上-m "注释" 。保持记录操作的好习惯。

$ touch demo.py

# vim demo.py操作

$ cat demo.py
print('第一次使用git')

$ git add demo.py

$ git commit -m "新建demo提交"

在不同环境下 add可能会有下面的提示,这是因为在不同操作平台下文件每行结尾的换行符不容windows默认是CRLF(\r\n),Unix/Linux一般是LF(\n),我是使用bash编辑上传到我的wimdows里导致的。详情可解决方法可以看这篇博文:https://blog.csdn.net/feng88724/article/details/11600375

commit成功后可以看到提交信息,其中 bbe89ed 是这次提交的id 可以用来回溯版本。1 file changed 标识有一个文件改动,  1 insertion(+) 插入了一行内容。

$ git add demo.py
warning: LF will be replaced by CRLF in demo.py.
The file will have its original line endings in your working directory

$ git commit -m "新建demo提交"

[master (root-commit) bbe89ed] 新建demo提交
 1 file changed, 1 insertion(+)
 create mode 100644 demo.py

add 可以一次提交多条内容到缓存区,最后通过commit一起提交。也是使用 git add --all 提交当前文件夹下所有文件到缓存区。

$ git add demo1 demo2

$ git commit -m "添加了demo1 demo2"

[master b084add] 添加了demo1 demo2
 2 files changed, 5 insertions(+)
 create mode 100644 demo1
 create mode 100644 demo2

还原

git可以使用 reset 还原到某一次的代码版本,现在我们先编辑一下demo.py

$ cat demo.py
print('第一次使用git')
print('新加了一些内容,但是风险比较大')
print('程序代码')

$ git add demo.py

$ git commit -m "新加了一些风险比较大的程序"
[master 64afaa3] 新加了一些风险比较大的程序
 1 file changed, 2 insertions(+)

如果程序跑出了重大bug,现在想要继续使用以前的版本运行。先使用 git log 查看各种版本情况。

$ git log
commit 64afaa3e65162b12d384ac2dde265014c2b68465 (HEAD -> master)
Author: Ascrew <1311585620@qq.com>
Date:   Mon Dec 28 13:56:11 2020 +0800

    新加了一些风险比较大的程序

commit b084addbd4a58f478f4e309a360c8fe7ae571b30
Author: Ascrew <1311585620@qq.com>
Date:   Mon Dec 28 13:49:04 2020 +0800

    添加了demo1 demo2

commit bbe89ed38c3d50f779860c98ff60bf4a21af85b1
Author: Ascrew <1311585620@qq.com>
Date:   Mon Dec 28 13:28:16 2020 +0800

    新建demo提交

可以的看到详细的列出了每次提交的记录,而每次提交的的注释也显示出来了,在面对多人协同开发大项目的时候注释就很有用了。从上到下分别显示了 版本id修改人(邮箱)修改时间 , 根据 版本id 可以直接回退到对应id的版本,使用命令 git reset id 

RESET参数

在使用 reset 之前先了解几个它的的参数,有三个选项 --soft --mixed --hard 一般不带参数就是mixed模式使用mixed就行了。
soft:是回退到已经add但是还未commit的状态,你只要commit就会回到 reset之前的状态。
mixed:回退到未add的状态,但是本地修改的文件都留着,再次add commit 回到reset之前的状态。
hard:本地文件和git分支都回退到选中分支的状态,基本很难找回修改过的内容了,慎用!!!
亲测,使用--hard回退到了一个版本,如果你后悔了,赶紧找到你想要的版本号id,并使用 --hard参数进行回退,一定要使用--hard参数才能全部回来。可以使用 git reflog可以看到当前终端的提交记录和提交过的版本号

使用soft回退的例子,git log 后发现与之前也有所不同,只有两个分支了 增加demo1 、demo2 和 修改demo.py 已经变成一次commit的分支。

$ git reset --soft bbe89e

$ git log
Author: Ascrew <1311585620@qq.com>
Date:   Mon Dec 28 13:28:16 2020 +0800

    新建demo提交

$ ls
demo.py  demo1  demo2

$ cat demo.py
print('第一次使用git')
print('新加了一些内容,但是风险比较大')
print('程序代码')

$ git commit -m "soft回退后在commit"
[master 73ab402] soft回退后在commit
 3 files changed, 7 insertions(+)
 create mode 100644 demo1
 create mode 100644 demo2

$ git log
commit 73ab402e14fe9d6b90937bc6eff53a382ad44878 (HEAD -> master)
Author: Ascrew <1311585620@qq.com>
Date:   Mon Dec 28 14:46:19 2020 +0800

    soft回退后在commit

commit bbe89ed38c3d50f779860c98ff60bf4a21af85b1
Author: Ascrew <1311585620@qq.com>
Date:   Mon Dec 28 13:28:16 2020 +0800

    新建demo提交

使用 hard回退,可以看到缓存区是什么都没有的。如果是已提交过的也许还有点机会。

$ git reset --hard bbe89e
HEAD is now at bbe89ed 新建demo提交

$ ls
demo.py

$ cat demo.py
print('第一次使用git')

$ git commit -m "测试reset hard 后是否还可以commit"
On branch master
nothing to commit, working tree clean

$ git reset 73ab40
Unstaged changes after reset:
M       demo.py
D       demo1
D       demo2

默认不加参数就是用的是 mixed模式。回退后发现本地文件都在也没有直接回退到以前版本,但是 commit 会提示还没有 add 

$ ls
demo.py  demo1  demo2

$ cat demo.py
print('第一次使用git')
print('新增')

$ git log
commit 592f98456ca1bb1f00eab404733ddfebeb167839 (HEAD -> master)
Author: Ascrew <1311585620@qq.com>
Date:   Mon Dec 28 15:00:40 2020 +0800

    又重新建立了两个demo文件

commit 73ab402e14fe9d6b90937bc6eff53a382ad44878
Author: Ascrew <1311585620@qq.com>
Date:   Mon Dec 28 14:46:19 2020 +0800

    soft回退后在commit

commit bbe89ed38c3d50f779860c98ff60bf4a21af85b1
Author: Ascrew <1311585620@qq.com>
Date:   Mon Dec 28 13:28:16 2020 +0800

    新建demo提交

$ git reset bbe89e
Unstaged changes after reset:
M       demo.py


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

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        demo1
        demo2

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

reset 还可以使用 HEAD 参数, HEAD^ 表示回到上个版本,HEAD^^ 是上上个版本,HEAD~100 往上100个版本(HEAD 加上 100个^ 也可以哦),在windows命令行运行git命令的朋友可以使用 git reset HEAD^"git reset HEAD^1git reset HEAD~ 来回退到上个版本,使用 git reset HEAD^会提示一个单词More?然后怎么输入都不好使 0_0!

github部分

github就像一个云仓库,可以和本地文件双向沟通,前提需要设置一些东西。

github与本地关联

首先要有一个github账户不多介绍。创建SSH Key。在bash终端创建key,填入你在github的邮箱地址,后面会让设置密码,自己看着办。

 ssh-keygen -t rsa -C "youremail@example.com"

创建完成会用户目录下会有 .ssh文件夹,里面有 id_rsa 和 id_rsa.pub 文件这两个是SSH Key密钥对 id_rsa 是私钥,不要泄露。id_rsa.pub 是公钥,对外开放的。打开id_rsa.pub 复制里面的内容。登录github,打开 Account settingsSSH Keys and GPG keys 页面,点击 New SSH Key 填上任意Title,在 Key 文本框里粘贴id_rsa.pub文件的内容,Add Key
之后就算是本地和github关联起来了,一个github账号可以关联多台机器,达到多人协同开发的摸目的。

项目关联

关联到github后还需要将本地项目对应到github账号上的项目,才能将本地代码提交到github或者从github更新本地代码。有两种方式进行绑定。

方法一:

本地编写了一段时间的项目,想要放到github上继续维护。在github新建一个仓库与本地项目同名。之前我在本地新建git项目 GitDemo,那么我也在github上新建一个GitDemo
然后将它俩关联起来,在bash中输入命令:

git remote add origin git@github.com:GithubName/GitDemo.git
# 添加仓库 origin2
$ git remote add origin2 git@github.com:GithubName/GitDemo.git

$ git remote -v
origin    git@github.com:GithubName/GitDemo.git (fetch)
origin    git@github.com:GithubName/GitDemo.git (push)
origin2    git@github.com:GithubName/GitDemo.git (fetch)
origin2    git@github.com:GithubName/GitDemo.git (push)

# 删除仓库 origin2
$ git remote rm origin2

这个远程库的名称是origin(默认叫法,可以自己起,并记住),GithubName是你的github账户名,可以在github查看和修改,GitDemo就是github对应的项目名称。

代码提交

将代码提交到github,第一次提交加上-u 参数,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来。

$ git push -u origin master

#使用一次-u后就可以不使用-u参数了
add
commit
git push origin master

通过命令查看所有远程仓库名,执行时加上 -v 参数,你还可以看到每个别名的实际链接地址。

$ git remote
$ git remote -v

代码更新

1.从远程下载分支和数据

$ git fetch origin

2.从远程库提取数据并尝试合并到本地分支

 git merge origin/master

方法二:

github有的项目,直接 git clone 到本地,github有https和ssh网址。当我们从零开发,最好现在github建立仓库,然后本地克隆下来。

$ git clone git@github.com:GithunName/GitDemo.git

所有的github代码我们都可以克隆到本地,如果这个github账号存储了你的公钥你就可以直接使用方法一提到的所有命令进行更新了。

master和main

有时从github clone项目的时候发现有的远端名称是main,有的是master,其实只是不同的分支,这是一个历史遗留问题,以前默认都是master现在git官方呼吁使用main作为默认名称。

更换名称方法如下,更改后远端库名就变成了main了,以后操作main就行了。

由master转为main
git branch -m master main
 
#提交代码
git push -u origin main

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值