Git归档

本文最后更新于:2021年4月11日 晚上

为什么置顶? 当然是因为我也经常忘记一些 git 命令啦!方便查阅

在这里插入图片描述
Workspace: 工作区
Index/Stage: 暂存区
Repository: 仓库区(或者说 ‘本地仓库’ )
Remote: 远程仓库

一、最简单提交总流程

把本地代码上传到远程仓库,最简单的流程是

(一)在项目根目录下初始化一个本地仓库
$ git init 

# 显示当前的Git配置(按q退出查看)
$ git config --list

# 编辑Git配置文件,设置提交代码时的用户信息
$ git config --global user.name "[name]"
$ git config --global user.email "[email address]"

(二)把全部代码提交到暂存区
$ git add .  注意add和.之间有个空格 
$ git status   查看状态

(三)把暂存区的代码提交到本地仓库
$ git commit -m ""	引号内填入本次修改的简述,例如初始化可填"init"  

(四)添加远程仓库
$ git remote add <reomote-name> <url>  名字自取,不需要跟远程仓库一模一样。
# 默认的主分支是master
$ git push -u <remote-name>  master

示例:

$ git init
$ git config --global user.name "github账户名"	
$ git config --global user.email "github邮箱"
$ git config --global user.password "github密码"
注: 上面的三个信息仅在首次使用需要配置,以后就不需要了
$ git add .
$ git commit -m "init"
$ git push -u origin master 

注: 参数-u设置–set-upstream,记住本次push时的参数,以后可直接git push

The -u tells Git to remember the parameters, so that next time we can simply run git push and Git will know what to do.

至此就已经把代码提交到仓库上啦!
下面是我整理的一些常用的命令

二、增加/删除文件

$ git add <file1> <file2>  添加文件到暂存区,多个文件用空格隔开
$ git add <dir>   提交指定目录到暂存区,包括子目录
$ git add .  添加所有文件到暂存区

# 如果你只想把某个文件保存在工作区使用,而不想将其添加到暂存区时
#(通常情况是你不想把这个文件提交到远程仓库才需要这么做)
$ git rm --cached <file>  停止追踪该文件
$ git rm -r --cached <dir>   停止追踪该文件夹,-r是递归处理
# 还有一个常用的方法是创建.gitignore文件,关于.gitignore请自行网上查阅

三、代码提交:

$ git commit -m  "[message]"  提交暂存区的文件到仓库区 

分支策略:首先master主分支应该是非常稳定的,也就是用来发布新版本,一般情况下不允许在上面干活,干活一般情况下在新建的dev分支上干活,干完后,比如上要发布,或者说dev分支代码稳定后可以合并到主分支master上来

四、版本控制

$ git reflog  # 查看引用日志(reference log)
$ git reset --hard <局部索引值,7位> 
# --mixed 切换本地仓库、暂存区的版本,保留工作区
#         未add
# --soft  切换本地仓库的版本, 保留工作区、暂存区
#         已add,待commit
# --hard  切换工作区、暂存区、本地仓库的版本
#         回到解放前..会丢失工作区内容!不过还可以切回去就是了

reset不仅可以回退,也可以前进。事实上只要知道commit的hash值就可以自由切换

五、分支相关:

$ git branch  查看分支
$ git branch <name>  创建分支
$ git checkout <name>  切换分支
$ git merge <name>  合并某分支到当前分支
$ git branch -d <name>  或者  $ git branch --delete <name> 

六、远程同步

$ git remote 查看远程库简略信息
$ git remote -v 查看远程库详细信息

# 添加新的远程仓库,名字可以自由定义,不需要跟远程仓库保持一致
$ git remote add <remote-name> <url>  

1. 本地仓库=>远程仓库

$ git push <remote-name> <branch-name>	把分支推上远程仓库

# 如果想要一次推向多个仓库,可以用一个关联多个仓库,格式如下
$ git remote set-url --add <remote-name> <branch-name>
# 例(remote-name用origin,branch-name用master):
$ git remote set-url --add origin <url-1>  关联url-1 
$ git remote set-url --add origin <url-2>  关联url-2
$ git remote set-url --add origin <url-3>  关联url-3
$ git remote origin master	推送分支master到origin关联的三个仓库

# 如果push一直报错,提示你应该先把远程的最新版本拉取下来,
# 然而你觉得远程库的代码已经是废品没必要拉去下来时,可以
# 把本地代码强制push到远程仓库(注意,会直接覆盖原有的文件)
$ git push -f <remote-name> <branch-name>  -f 强制,force

2. 远程仓库 => 本地仓库

方式一:git fetch + git merge(推荐)

# 下载远程仓库的分支暂存在本地仓库分支,不会覆盖工作区
$ git fetch <remote-name> <branch>:<temp-branch> 
# 把远程仓库的分支合并到当前本地的分支,注意第二个参数是远程仓库的分支名
$ git merge <temp-branch> 

通常用法:


# 把远程仓库origin的master分支暂存到temp分支(若不存在则会自动创建)
$ git fetch origin master:temp
$ git diff temp		 查看当前分支与temp分支的不同处
$ git merge temp	 合并temp分支到当前分支
$ git branch -d temp 删除temp分支

方式二:git pull

# 下载远程仓库到工作区
$ git pull <remote-name> <branch-name>      

git pull相当于是使用固定参数地从远程fetch最新版本并merge(合并)到本地,这样有一个缺点,少了git diff查看远程分支与本地的差异的过程,如果有冲突的话它也会直接merge,虽然之后依旧可以手动修改冲突部分(详见),但有可能导致严重的后果。

git pullgit fetch + git merge,通常git fetch更安全一些, git pull慎用

更多资料:

一整个星期下来,看了两三个牛人的技术生涯,忽然就觉得自己的格局还是那么的小。
这是个13岁编程,60岁总结自己的一生,并不是觉得他有多么的厉害,而是这份总结写的实在是非常贴切真实。
https://hackernoon.com/what-happened-to-software-development-j92032w9#subscribe-embed

https://www.cnblogs.com/ECJTUACM-873284962/

这个世界真的很大,有很多有趣的思想,独特的人格。诸多类型的信仰,总有一种适合自己的。开阔视野慢慢寻找,好好生活吧!


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!