一文解决GitHub常见疑问 -- Git超详细图文入门讲解

 

前言:在多人开发场景,使用到Git,只是运用了几个命令,一致对它没有深刻了解,趁着疫情在家,这次系统学习Git -- 分布式版本控制系统。

1、Git与SVN对比

(1)SVN

(2) Git

2、Git工作流程

3、Git常用命令

(1) git config --list

$ git config --list
core.symlinks=true
core.autocrlf=true
core.fscache=true
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
help.format=html
rebase.autosquash=true
http.sslcainfo=E:/Study Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
http.sslbackend=openssl
diff.astextplain.textconv=astextplain
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge --skip -- %f
filter.lfs.process=git-lfs filter-process --skip
filter.lfs.required=true
credential.helper=manager
user.name=zhouth94
user.email=zhouth94@163.com

(2)获取Git仓库

·在本地初始化一个仓库

zhou@PC-ZTF MINGW64 /d/LearnStuff/GithubCode/repository1
$ git init

·从远程仓库克隆

zhou@PC-ZTF MINGW64 /d/LearnStuff/GithubCode
$ git clone https://github.com/zhouth94/leetcode.git
Cloning into 'leetcode'...
remote: Enumerating objects: 43, done.
remote: Counting objects: 100% (43/43), done.
remote: Compressing objects: 100% (41/41), done.
remote: Total 43 (delta 3), reused 38 (delta 1), pack-reused 0
Unpacking objects: 100% (43/43), done.

(3)工作目录、暂存区、版本库概念

(4)Git工作目录下文件的两种状态

(5)git status 查看文件状态

?? 代表未跟踪状态

zhou@PC-ZTF MINGW64 /d/LearnStuff/GithubCode/leetcode (master)
$ git status
On branch master
Your branch is up to date with 'origin/master'.
zhou@PC-ZTF MINGW64 /d/LearnStuff/GithubCode/leetcode (master)
$ git status -s
?? GenerateParentheses.java
?? LetterCombinationsofaPhoneNumber.java
?? ListNode_P.java
?? ListNode_second.java
?? LongestIncreasingSubsequence.java
?? MergeKSortedLists.java
?? MergeKSortedLists_2.java
?? Permutations.java
?? RemoveNthNodeFromEndOfList.java
?? Subsets.java

 

(6)git reset 取消暂存

(7)git add . (别忘记后面的.,此操作是把文件夹下面的未跟踪状态的文件都添加进来)

zhou@PC-ZTF MINGW64 /d/LearnStuff/GithubCode/leetcode (master)
$ git add .

zhou@PC-ZTF MINGW64 /d/LearnStuff/GithubCode/leetcode (master)
$ git status
On branch master
Your branch is up to date with 'origin/master'.

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file:   GenerateParentheses.java
        new file:   LetterCombinationsofaPhoneNumber.java
        new file:   ListNode_P.java

A 代表已经添加到暂存区 

zhou@PC-ZTF MINGW64 /d/LearnStuff/GithubCode/leetcode (master)
$ git status -s
A  GenerateParentheses.java
A  LetterCombinationsofaPhoneNumber.java
A  ListNode_P.java
A  ListNode_second.java

 (8)git commit 将暂存区的文件修改提交到本地仓库

git commit  -m  "提交信息"  (如“first commit”)

zhou@PC-ZTF MINGW64 /d/LearnStuff/GithubCode/leetcode (master)
$ git commit -m "add"
[master a7ae562] add
 43 files changed, 1686 insertions(+)

 (9)

 (10)git log 查看日志记录

zhou@PC-ZTF MINGW64 /d/LearnStuff/GithubCode/leetcode (master)
$ gitllog
bash: gitllog: command not found

zhou@PC-ZTF MINGW64 /d/LearnStuff/GithubCode/leetcode (master)
$ git log
commit a7ae5628d5e88071534a9c0486fb796a51f04edf (HEAD -> master)
Author: zhouth94 <zhouth94@163.com>
Date:   Wed May 20 15:59:09 2020 +0800

    add

commit 398deb33cb3303e192b0a05520637098658bd983 (origin/master, origin/HEAD)
Author: zhouth94 <zhouth94@163.com>
Date:   Thu Mar 26 22:45:02 2020 +0800

    bfs commit

commit 52bc2ebac3f82dc9f6e912a76e01371bcb7c8ed9
Author: zhouth94 <zhouth94@163.com>
Date:   Thu Mar 26 19:41:12 2020 +0800

    do two more problems

commit 5e424efc8c3be1d087126bf5520d382c5fc1d29e
Author: zhouth94 <zhouth94@163.com>
Date:   Wed Mar 25 10:28:07 2020 +0800

    ”first commit

commit c1d2c3637cd616efc578c3cacd685ca5f96233e2
Author: Code Fish <48707464+zhouth94@users.noreply.github.com>
Date:   Wed Mar 25 09:42:17 2020 +0800

    Initial commit

 4、远程仓库操作

(1)查看远程仓库

$ git remote
origin

zhou@PC-ZTF MINGW64 /d/LearnStuff/GithubCode/leetcode (master)
$ git remote -v
origin  https://github.com/zhouth94/leetcode.git (fetch)
origin  https://github.com/zhouth94/leetcode.git (push)

(2)从远程仓库抓取与拉取

·git fetch 是从远程仓库获取最新版本到本地仓库,不会自动merge

·将本地init初始化的本地仓库与github远程仓库进行关联,使用  git remote add,然后使用git fetch 进行抓取,但不会将仓库内容自动合并到工作区 

 ·git pull 是从远程仓库获取最新版本并merge到本地仓库

(3)推送到远程仓库

当你想分享你的代码时,可以将其推送到远程仓库。 git push [remote-name] [branch-name]

zhou@PC-ZTF MINGW64 /d/LearnStuff/GithubCode/leetcode (master)
$ git push origin master
Enumerating objects: 46, done.
Counting objects: 100% (46/46), done.
Delta compression using up to 4 threads
Compressing objects: 100% (45/45), done.
Writing objects: 100% (45/45), 76.44 KiB | 3.82 MiB/s, done.
Total 45 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), done.

5、拉取下来之后,在本地修改文件,然后推送到远程仓库

(1)

(2)需要将README.md加入暂存区并提交到本地仓库    -a 代表直接加入暂存区并提及,不需要git add .  -m 代表日志信息

git commit -a -m  " "

(3)提交到远程

6、Git分支

(1)查看分支

·本地分支:

 ·远程分支:

(2)创建分支 git branch branch1

(3)切换分支 git checkout 

(4)如何将本地创建的分支推送至远程仓库分支  git push origin branch1

(5)合并分支

·切换到branch1分支,往branch1中添加代码,然后使用 git add . 加入暂存区;然后 git commit 提交到本地仓库,可以在第一行增加注释

·若切换到master分支,则在branch1分支中新增的代码是没有的。

·那么,我们希望在branch1分支中新增的代码也合并到master分支中

如何操作:首先,切换到master分支;然后 gir merge branch1 即可

(6) 将新修改的内容推送到远程仓库的某个分支

注意:本地的master分支和远程的master分支之间存在追踪关系

(7)删除分支(本地) git branch -d branch1

7、Git分支综合运用

(1)要求

8、Git标签

 (1)列出已有的标签

(2)创建新标签

(3)将标签推送至远程仓库

8、在IDEA中使用Git

(1)在IDEA配置Git

(2)创建一个项目,将项目交给git管理,选择项目所在的目录,会发现隐藏目录.git出现在项目目录下

(3)将项目下的文件加到暂存区。这时,需要考虑一个问题:我们项目下的文件是否都交给git进行管理呢?实际开发中,并不是的。例如,.idea目录文件不需要交给git管理,它由idea管理的。

因此,在提交到本地仓库之前,需要先排除一些目录文件,我们使用忽略列表 .gitignore

(4)提交到本地仓库

(5)将IDEA项目推送到远程仓库

 

报错解决: Push to origin/master was rejected

在Terminal 输入:git pull origin master --allow-unrelated-histories

Push 成功~

9、从远程仓库克隆

(1)克隆

(2)从远程拉取代码

提交的同时推送到远程

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页