git教程笔记

参考文章:https://www.liaoxuefeng.com/ 想详细了解看原文

1、安装

https://git-scm.com/downloads git官网直接下载 或者网盘…
然后直接按提示一步步确定就可以了

2、安装完成后配置自己的身份验证

在开始菜单里找到“Git”->“Git Bash”,弹出对话框(可能在启动的时候会有找不到系统文件的错误提示,但好像不会有影响)就说明Git安装成功,运行下面两条命令创建你的帐户

 git config --global user.name tangyuan
 git config --global user.email 8686868@qq.com

注意git config命令的–global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,
当然也可以对某个仓库指定不同的用户名和Email地址。

3、创建版本库

①随便在一个盘下面建个文件夹(注意不要包含中文名),比如在E:/git/learngit,当然也可以直接在cmd下面用命令行创建
然后打开cmd,用cd进入你创建的learngit的文件下目录下。
②在cmd命令行下的这个文件夹下运行 git init(如果你安装git的时候按默认的安装,软件会自动帮你配置好环境变量,如果没有,在环境变量Path下面把git的环境变量加进去)
③编写一个.txt文件放在这个目录下比如(text.txt),不建议用windows自带的记事本,最好下载个notepad++(真的好用,不管是写文档还是用来看任何语言的代码都非常Nice)
④回到cmd,两个步骤把文件添加到仓库
(1)用命令git add告诉Git,把文件添加到仓库:
git add readme.txt
(2)用命令git commit告诉Git,把文件提交到仓库:
git commit -m "wrote a readme file"

运行上面这句之后可以看到下面这个信息,说明成功

[master (root-commit) eaadf4e] wrote a readme file
1 file changed, 2 insertions(+)
create mode 100644 text.txt

-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。

上面的两条命令add和commit如果了解数据库的就可以知道,add相当于数据库的很多操作,而commit相当于提交事务,所以在commit之前我们可以增加很多add比如:

git add file1.txt

git add file2.txt file3.txt

git commit -m "add 3 files."

4、版本回退功能

①假设我们现在继续在text.txt文件中增加

Creating a new branch is quick.

Git is a distributed version control system.

Git is free software.

然后运行git status,这条命令可以让我们时刻掌握仓库当前的状态。我们可以看到如下的信息

On branch master
Changes not staged for commit:

(use “git add …” to update what will be committed)

(use “git checkout – …” to discard changes in working directory)
modified: readme.txt
no changes added to commit (use “git add” and/or “git commit -a”)

②现在你修改完了这个文档之后,跑去打了几盘王者荣耀,回来之后忘了你修改了什么内容。用git diff text.txt 可以查看你修改的情况,运行后你可以看到你的修改内容

diff --git a/readme.txt b/text.txt

index 46d49bf…9247db6 100644

— a/text.txt

+++ b/text.txt

@@ -1,2 +1,2 @@

-Git is a version control system.

+Git is a distributed version control system.

Git is free software.

其中的++++就是你增加的内容,----就是你删除的内容

③现在你又在你的text.txt大项目中进行了改BUG,改啊,改啊,改啊…

版本1:wrote a readme file
Git is a version control system.
Git is free software.
版本2:add distribute
Git is a distributed version control system.
Git is free software.
版本3:append GPL
Git is a distributed version control system.
Git is free software distributed under the GPL.

像这样你修改了很多次。
这时候你又跑去玩吃鸡了。回来之后,卧槽,我刚才改了什么,做了哪些修改。这时候你就可以用git log命令来查看你的修改内容

commit 1094adb7b9b3807259d8cb349e7df1d4d6477073 (HEAD -> master)
Author: tangyuan 8686868@qq.com
Date: Fri May 18 21:06:15 2018 +0800
append GPL
commit e475afc93c209a690c39c13a46716e8fa000c366
Author: tangyuan 8686868@qq.com
Date: Fri May 18 21:03:36 2018 +0800
add distributed
commit eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0
Author: tangyuan 8686868@qq.com
Date: Fri May 18 20:59:18 2018 +0800
wrote a readme file

其中commit后面那串数字是你的版本号,这个可以要来以后你要回退到哪个版本中去。

④发现你今天修改的内容Bug比昨天的还多,想要回退到昨天的版本
git reset --hard HEAD^

HEAD is now at e475afc add distributed

cat text.txt查看文件的内容,是否回退到上一个版本。如果想要回退到任意版本,首先使用 git reflog查看你的所有修改版本的信息。

e475afc HEAD@{1}: reset: moving to HEAD^^

1094adb (HEAD -> master) HEAD@{2}: commit: append GPL

e475afc HEAD@{3}: commit: add distributed

eaadf4e HEAD@{4}: commit (initial): wrote a readme file

其中前面这么一串数字就是你的每一版本,所以你现在就可以回退到任意版本的信息了git reset --hard e475,版本号不必写全,写前面几位可以识别的就可以。

5、撤销未提交的修改

今天你还是在修改代码,一时之间bug太多很生气在注释里画了一只猪。然后执行了git add text.txt 添加到暂存区(关于暂存区请看原文讲解),突然你的同事看到了,让你赶紧撤回来,你就可以使用git check -- text.txt来撤销暂存区的内容。

6、上传到远程仓库(看原文讲解,这里是直接连到github)

①首先创建一个github->个人头像下面有一个setting->SSH and GPG keys->new SSH key
其中title随便你取,而key要使用 ssh-keygen -t rsa -C"tangyuan@qq.com"

然后一直回车
然后就可以在你的C:\Users\Administrator下面有一个.ssh文件夹,里面有两个文件id_rsa和id_rsa.pub,id_rsa是私钥,不能泄露出去 id_rsa.pub是公钥,可以放心地告诉任何人。然后将id_rsa.pub的内容复制到SSH那个Key那一栏就可以了。

②创建一个仓库,还是在刚才的SSH and GPGkeys界面。在下面有一个Respositories->new Respositories,在Repository填上你的文件夹名称learngit,其他默认就可以了。

③关联本地库
git remote add origin git@github.com:tangyuanxixi/learngit.git 其中的tangyuanxixi改成你自己的github名称。
④然后就可以将你的本地内容推送到github上面去了 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’.

这样你上github看你刚才创建的仓库就可以看到你刚才上传的文件text.txt

7、创建新的分支

在前面的使用过程中,我们一直使用master这个分支,关于git在运行过程中的分支概念,和每次提交版本的head指向的细节查看参考文章的原文。
①创建分支dev并切换到这个分支

git checkout -b dev

Switched to a new branch ‘dev’

其中git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:

 git branch dev
 git checkout dev

②用 git branch 查看分支

* dev

master

其中带有*号的是当前所处的分支。然后在这个分支修改文件,再将这个分支合并到master分支。总的流程如下

查看分支:git branch

创建分支:git branch

切换分支:git checkout

创建+切换分支:git checkout -b

合并某分支到当前分支:git merge

删除分支:git branch -d

所以我们一般不在master分支上面进行工作,而是在其他的分支比如dev,每个人都在自己的分支上面操作,最后再合并到master分支上面去

8.临时转移到新的分支

①当前你刚好在做一个分支上面的任务,比如dev,这时候你的主管告诉你赶紧先把手头的任务停一下,有一个Bug你先修改一下。但这个时候你的任务还没有完成,还不能提交,你又想创建一个新的分支issue-101来修改bug,这时候你就可以使用 git stash来保存你当前还没有提交的分支,等以后恢复现场继续工作。

git stash

Saved working directory and index state WIP on dev: f52c633 add merge

②现在你就可以转到master分支,创建一个分支issue-101来修改Bug

git checkout master

Switched to branch ‘master’
Your branch is ahead of ‘origin/master’ by 6 commits.
(use “git push” to publish your local commits)

git checkout -b issue-101

Switched to a new branch ‘issue-101’

 git add text.txt 
 git commit -m "fix bug 101"

[issue-101 4c805e2] fix bug 101
1 file changed, 1 insertion(+), 1 deletion(-)

然后将issue-101分支合并至master

git checkout master

Switched to branch ‘master’

Your branch is ahead of ‘origin/master’ by 6 commits.
(use “git push” to publish your local commits)

git merge --no-ff -m "merged bug fix 101" issue-101

Merge made by the ‘recursive’ strategy.

readme.txt | 2 ±

1 file changed, 1 insertion(+), 1 deletion(-)

③bug的任务改好了,回到dev分支,继续刚才的任务
git checkout dev

Switched to branch ‘dev’

 git status

On branch dev

nothing to commit, working tree clean

查看我们的工作现场保存到哪里去

 git stash list

stash@{0}: WIP on dev: f52c633 add merge

恢复,并自动删除stash

git stash pop

On branch dev

Changes to be committed:

(use “git reset HEAD …” to unstage)

new file: hello.py

Changes not staged for commit:

(use “git add …” to update what will be committed)

(use “git checkout – …” to discard changes in working directory)

modified: text.txt

Dropped refs/stash@{0}
(5d677e2ee266f39ea296182fb2354265b91b3b2a)

如果有多个临时保存,先查看

git stash list

stash@{0}: WIP on dev: f52c633 add merge

然后用指定的方式恢复

git stash apply stash@{0}

再删除指定stash

git stash drop stash@{0}
9、删除一个没有被合并过的分支
git branch -D <name>
10、多人协作

1、首先,可以试图用git push origin 推送自己的修改;

2、如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;

3、如果合并有冲突,则解决冲突,并在本地提交;

4、没有冲突或者解决掉冲突后,再用git push origin 推送就能成功!

如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to origin/。

这就是多人协作的工作模式,一旦熟悉了,就非常简单。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值