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

Workspace: 工作区
Index/Stage: 暂存区
Repository: 仓库区(或者说 ‘本地仓库’ )
Remote: 远程仓库
一、最简单提交总流程
把本地代码上传到远程仓库,最简单的流程是
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| (一)在项目根目录下初始化一个本地仓库 $ 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 $ 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>
|
除了merge可以合并外,还有一种方式:rebase。(rebase实践)
六、远程同步
| $ 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 pull(上班常用)
| # 下载远程仓库到工作区 $ git pull <remote-name> <branch-name>
|
git pull
相当于是使用固定参数地从远程fetch
最新版本并merge
(合并)到本地,这样有一个缺点,少了git diff
查看远程分支与本地的差异的过程,如果有冲突的文件需要手动修改冲突部分(详见),
git pull
≈ git fetch
+ git merge
,通常git fetch
更安全一些。
方式一: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分支
|
更多资料:
一整个星期下来,看了两三个牛人的技术生涯,忽然就觉得自己的格局还是那么的小。
这是个13岁编程,60岁总结自己的一生,并不是觉得他有多么的厉害,而是这份总结写的实在是非常贴切真实。
https://hackernoon.com/what-happened-to-software-development-j92032w9#subscribe-embed
https://www.cnblogs.com/ECJTUACM-873284962/
这个世界真的很大,有很多有趣的思想,独特的人格。诸多类型的信仰,总有一种适合自己的。开阔视野慢慢寻找,好好生活吧!