首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >编程_Git基础教程

编程_Git基础教程

作者头像
mikimo
发布2022-07-20 14:46:21
发布2022-07-20 14:46:21
1.1K0
举报
文章被收录于专栏:iOS开发~iOS开发~

Git基础

文章目录

一、安装配置:

1、安装:

macOSHomebrew安装为例:

1、安装Homebrew

官网有安装命令:https://brew.sh/

Install Homebrew下面那行命令复制粘贴到Terminal中,回车就好了

2、运用Homebrew安装git:

Terminal中运行:brew install git

(还有其他方法,and其他系统的安装方法,Git官网中都可以找得到)

2、配置

Git 提供了一个叫做git config的工具,专门用来配置或读取相应的工作环境变量。

这些环境变量,决定了 Git 在各个环节的具体工作方式和行为。这些变量可以存放在以下三个不同的地方:

1、~/etc/gitconfig 文件:系统中对所有用户都普遍适用的配置,用git config —system读写(操作系统可以设置多个用户)

2、~/.gitconfig 文件:用户目录下的配置文件,只适用于该用户,用git config —global读写

3、xxx/.git/config 文件:当前项目Git目录的配置文件,只适用于当前项目

(这三个文件中的配置,下面的会覆盖上面的)(即:优先级从低到高)

3、配置用户信息

设置怎样显示自己的提交。例如:

git config —global user.name “moxiaoyan”(设置用户名)

git config —global user.email “moxiaoyan@qq.com”(设置邮箱)

git config —global —unset user.name(删除用户名设置)

git config —global —unset user.email(删除邮箱设置)

4、忽略文件:.gitignore

有些文件是不需要同步的,如:三方库

Apple开发举例:Pods文件夹下的所有三方库,可以根据Podfilecocopods下载就行

需要忽略的文件可以用.gitignore设置,github上有个库保存了各个语言适用的gitignore文件,需要的可以自取:https://github.com/github/gitignore

二、基本概念:

图片来自:菜鸟教程

1、工作区workspace:就是我们敲代码编辑文件的地方

2、暂存区staging area:修改过的文件需要暂存后才能commit

3、本地版本库local repository:将暂存区的代码commit后,就会存在本地仓库。(本地可以保存多个commit,后一起提交)

4、远程版本库remote repositorycommit后的代码push后,就会提交到远程仓库了。(就可以在云端上保存你的代码了)

三、基本操作:

按正常工作流程的顺序介绍,接下来的命令说明中:

<>:表示应该根据情况填写不同的值

[]:表示可选参数

1、Init、Clone

git init(创建一个空的git仓库,默认为master分支)

(就可以在项目文件中看到.git文件夹(默认隐藏),所有此项目相关的快照数据都会存放在这里)

git clone https://github.com/XXX.git(拷贝一份远程仓库,即下载一个项目)

2、Status 状态

git status(查看上次提交后文件的修改情况)

git status -s(简洁显示)

3、Add 添加

add命令可以将文件添加到暂存区

git add.(添加所有文件)

git add hello.txt readme.md …(添加指定文件)

git add dir(添加指定文件夹)

4、RM 删除

git rm hello.txt(将文件从工作区中删除)

git rm -f hello.txt(已经放到暂存区的文件,需要使用强制删除指令-f)

git rm —cached hello.txt(将文件从暂存区中移除,但保留在工作区)

git rm -r *(递归删除当前目录下的所有文件和子文件)

5、MV 重命名/移动

git mv readme readme.md(重命名文件)

git mv readme dir(移动文件)

6、Stash 存储

git stash(将当前修改存储起来)

git stash list(查看存储列表)

git stash clear(清除所有存储)

git stash pop(应用最后一次存储,并删除)

git stash apply(恢复最近一次存储)

git stash apply stash@{2}(恢复某一次存储)

git stash drop stash@{2}(删除某一次存储)

7、Pull 拉取

git pull 其实就是 git fetchgit merge FETCH_HEAD 的简写。格式如下:

git pull <远程主机名> <远程分支名>:<本地分支名>

从远程获取代码,并合并本地的版本

git pull(拉取更新)

git pull -rrebase:没有merge那个提交 )

git pull origin(更新)

git pull origin dev(拉取dev分支)

如:

git pull origin master:dev(将远程主机originmaster分支拉取过来,与本地的dev分支合并)

git pull origin master(如果需要合并的是当前分支,则冒号后面的分支名可以省略)

8、Diff 比较文件差异

git diff [file](工作区-暂存区,可以指定文件)

git diff --stat(简洁显示)

git diff —staged [commitID] [file] 暂存区和上一次commit的差异:(可以指定commitID和文件)

git diff —cached [commitID] [file](同上)

git diff [commitID1] [commitID2] (两次提交差异)

9、Commit 提交

提交暂存区到本地仓库

git commit -m [message]message:提交日志)

git commit [file1] [file2] ... -m [message](提交指定文件)

如果需要提交的文件,不想一个一个的add到暂存区,可以使用-a参数:

git commit -a -m [message]-a会提交Untracked状态的内容)(Untracked:未暂存)

10、Reset 撤销修改

git reset(将暂存区文件重置到跟上一次commit保持一致,工作区文件保持不变)

git reset HEAD^(回退所有内容到上一个提交)

git reset HEAD^^(回到上上个提交)

git reset HEAD~1(回到上一个版本 可以写:1~100)

git reset HEAD^ hello.txt(回退hello文件)

git reset <commitID>(回滚提交记录,但本地代码不回滚)

git reset --hard HEAD(撤销工作区和暂存区的所有内容,慎用!)

git reset --hard <commintID> (回滚提交记录和本地代码)

// reset会清掉指定commitID后的所有提交,已提交远端的记录回滚,慎用!!!

git reset --soft HEAD^ (软撤销)

11、Revert 还原提交

git revert <commitID> 还原指定提交(会直接生成新的commit,等待push) Tips:如果需要还原多次commit,应该按commit的逆序revert,才不会冲突。

12、Push 上传

将本地的分支提交上传到远程分支并合并,命令格式如下:

git push <远程主机名> <本地分支名>:<远程分支名>

git push <远程主机名> <本地分支名>(如果本地分支和远程分支同名,可以省略冒号后的远程分支名)

git push <远程分支名>

例:

git push origin master:master(将本地的 master分支推送到 origin 主机的 master 分支)

git push origin master(同上)

git push origin HEAD:refs/for/master

git push origin HEAD:refs/for/podplus

git push origin --delete master(删除 origin 主机的 master 分支)慎用!

13、Log 查看日志

git log(查看历史提交记录)

git log —oneline (简洁输出)

git log —graph —oneline (显示修改详情)

git blame <file>(以列表形式查看指定文件的历史修改记录)

git log [-p] master..dev (dev分支相比master分支有哪些不同的提交)(仅包含分支的提交)

git log [-p] master…dev (dev分支和master分支有哪些不同的提交)(包含拉出分支后master的所有提交)

14、Branch 分支

git branch(列出本地分支)

git branch dev(创建dev分支)

git branch -d <分支名>(删除已经合并过的分支)

git branch -D <分支名>(强制删除未合并的分支)

git checkout dev(切换到dev分支)

git merge dev(将dev分支合并到当前分支[如:master分支]上)

  • 如果有冲突,需要处理:

分隔符上部分:当前分支内容

分隔符下部分:远程分支内容

  • 处理非文本文件冲突:

git checkout —theirs lib/base.all (采用远程分支)

git checkout —ours lib/base.all(采用本地分支)

// 如果冲突暂时解决不了,就可以撤销合并

git merge —abort(撤销合并)

15、Cherry-pick 引入更改

git cherry-pick <commitID>(引入某个提交的修改) git cherry-pick --edit <commitID>(引入某个提交的修改,并编辑其commit msg) git cherry-pick --e <commitID>(引入某个提交的修改,并编辑其commit msg) git cherry-pick <commitID1> <commitID1>…(引入多个提交)

git cherry-pick <commitID1>…<commitIDn>(引入从commitID1commitID1n的所有提交)

git cherry-pick <commitID1>^…<commitIDn>(包含commitID1

git cherry-pick <branchID>(引入某个分支上的最后一个的提交的修改)

16、Tag标签

如果项目达到一个重要的阶段,并希望永远记住那个特别的提交,可以使用git tag给它打上标签

git tag [-a] v1.0(不用-a,不会记录打标签的时间、用户,不能添加注解)

git tag -a v0.9 <commitID>(给已经提交的commit追加标签)

四、补充

1、merge和rebase的区别

将dev分支合并到当前分支: git merge dev git rebase dev

  • Merge:形成一个新的节点 处理冲突更直接 适用于:公共分支的代码同步和合并
  • Rebase:把分支的commit”剪”下来,然后追加到主干 (commitID会跟原dev分支上的不同) 如果此时dev还需要同步master的代码,dev分支就会有两份不同commitID的相同提交,中间还会插一个新的commintID 能够保证清晰的commit记录 适用于:个人未提交远端的commint记录的优化

举例:用rebase的方式反向合入master分支的代码: git rebase master git merge --continue

2、合并Commit

git rebase -i [合并后需要接的上一个提交commitID]

// 按 I开始编辑

// pick 的意思是要会执行这个 commit

// squash 的意思是这个 commit 会被合并到前一个commit

将需要合并的pick改成squash

ESC ,输入 wq(保存退出)

此时本地的多个commit就合成了一个了,再push。。。

3、修改commit message

3.1、修改最后一条commit message git commit --amend

3.2、修改任意一条commit message

  1. git rebase -i HEAD~2 (倒数第几条,从1开始)
  2. I,进入编辑,将需要修改的commit前面的pick修改为edit; (编辑方式:按Esc,按,输入:wq,回车)
  3. git commit --amend修改2.2指定的commit message(编辑方式如上)
  4. git commit --continue (完成 rebase)

4、命令行记不住怎么办?

git help xxx(可以查询相应命令的参数格式)

如:

git help config

git help commit

  • 可能会用到的一些系统命令:

touch readme.md(新建一个文件)

vim readme.md(打开一个文件编辑)

参考:

Git官网:https://git-scm.com/

菜鸟教程:https://www.runoob.com/git/git-tutorial.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-03-07,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • Git基础
    • 文章目录
    • 一、安装配置:
      • 1、安装:
      • 2、配置
      • 3、配置用户信息
      • 4、忽略文件:.gitignore
    • 二、基本概念:
    • 三、基本操作:
      • 1、Init、Clone
      • 2、Status 状态
      • 3、Add 添加
      • 4、RM 删除
      • 5、MV 重命名/移动
      • 6、Stash 存储
      • 7、Pull 拉取
      • 8、Diff 比较文件差异
      • 9、Commit 提交
      • 10、Reset 撤销修改
      • 11、Revert 还原提交
      • 12、Push 上传
      • 13、Log 查看日志
      • 14、Branch 分支
      • 15、Cherry-pick 引入更改
      • 16、Tag标签
    • 四、补充
      • 1、merge和rebase的区别
      • 2、合并Commit
      • 3、修改commit message
      • 4、命令行记不住怎么办?
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档