Git常用命令

初次建立仓库

方法一:先建立本地仓库,例如mark

git init 初始化仓库
git remote add mark(远程git名) https://www.gitee.com/个性化域名/mark.git

这样就完成了版本的初始化

git pull mark master

将远端仓库代码下拉

git add 文件名(输入.为全部)
git commit -m "初始化仓库 #20201126"
git push mark master

第一次提交需输入用户名和密码,之后会存储至“控制面板\所有控制面板项\凭据管理器”中

在新建仓库时,如果在平台仓库上已经存在 readme 或其他文件,在提交时可能会存在冲突,这时用户需要选择的是保留线上的文件或者舍弃线上的文件,如果您舍弃线上的文件,则在推送时选择强制推送,强制推送需要执行下面的命令(默认不推荐该行为):

git push mark master -f

如果您选择保留线上的 readme 文件,则需要先执行:

git pull mark master

方法二:创建远程仓库mark,先将远程仓库克隆到本地,修改后再进行push

git clone https://www.gitee.com/个性化域名/mark.git

配置git的本地信息,执行 git config 配置好,可使用 git config -l 展示所配置的git本地信息

git config --global user.name "xxx"
git config --global user.email "xxx@qq.com"

修改代码后,执行提交命令

git add .
git commit -m "代码仓库初始化 #20201127"
git push mark master

Git配置

Git提供了名为git config的工具用于配置工作环境,配置好的环境变量决定了Git的工作方式和行为。

/etc/gitconfig:系统中对用户系统中对所有用户都普遍适用的配置。若使用 git config 时用 --system 选项,读写的就是这个文件。
~/.gitconfig:用户目录下的配置文件只适用于该用户。若使用 git config 时用 --global 选项,读写的就是这个文件。
当前仓库的 Git 目录中的配置文件(也就是工作目录中的 .git/config 文件):这里的配置仅仅针对当前仓库有效。每一个级别的配置都会覆盖上层的相同配置,所以 .git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量。

常见命令使用

远程仓库常见命令

git clone https://www.gitee.com/xxx.git #克隆仓库
git remote -v #查看远程仓库
git remote add [name] [url] #添加远程仓库
git remote rm [name] #删除远程仓库
git remote set-url --push [name] [newUrl] #修改远程仓库
git remote rename [oldname] [newname] #修改原创仓库名
git pull [remoteName] [localBranchName] #拉取远程仓库
git push [remoteName] [localBranchName] #推送远程仓库

Git Commit message

在Git中,每次提交代码后,都需要写Commit message,否则不允许提交

git commit -m "第一次提交 #20201128"

-m参数用于指定 commit message

如果一行不够写,则直接执行 git commit

格式

<type>(<scope>): <subject>
// 空一行
<body>
// 空一行
<footer>

Type

feat:新功能(feature)
fix:修复bug
docs:文档(documentation)
style:格式(不影响代码运行的变动)
refactor:重构(即不是新增功能,也不是修改bug的代码变动)
test:增加测试
chore:构建过程或辅助工具的变动

如果 type 为 feat 和 fix ,则该 commit 将肯定出现在 Change log 之中。其他情况(docs、chore、style、refactor、test)由你决定,要不要放入 Change log,建议是不要。

Scope

scope 用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,视仓库不同而不同。

Subject

subject 是 commit 目的的简短描述,不超过50个字符。

以动词开头,使用第一人称现在时,比如change,而不是changed或changes
第一个字母小写
结尾不加句号(.)

Body

Body 部分是对本次 commit 的详细描述,可以分成多行。有两个注意点。

使用第一人称现在时,比如使用change而不是changed或changes。
应该说明代码变动的动机,以及与以前行为的对比。

Footer 部分只用于两种情况。

1.不兼容变动

如果当前代码与上一个版本不兼容,则 Footer 部分以BREAKING CHANGE开头,后面是对变动的描述、以及变动理由和迁移方法。

2.关闭 Issue

如果当前 commit 针对某个issue,那么可以在 Footer 部分关闭这个 issue 。

Closes #234

也可以一次关闭多个 issue 。

Closes #123, #245, #992

代码合并

冲突合并一般是因为自己的本地做的提交和服务器上的提交有差异,并且这些差异中的文件改动,Git不能自动合并,那么就需要用户手动进行合并

git merge branch #将当前分支与branch分支进行合并
git rebase branch #将当前分支与branch分支进行合并,可以创造更线性的提交历史,代码库的提交历史将会变得异常清晰

版本回退

回退到当前版本(放弃所有修改)

git status
git reset --hard

放弃某一个文件的修改

git status
git checkout mou.md #放弃mou.md文件的修改

回退到某一版本但保存自该版本起的修改

git status
git log #git提交历史日志
git reset 59e194b48646aa25930d2b920e6fc6577a40401c #回退到该版本号的版本

回退到某一版本并且放弃所有的修改

git status
git log
git reset --hard 59e194b48646aa25930d2b920e6fc6577a40401c #回退到该版本号的版本并放弃所有修改

回退远程仓库的版本

先将本地分支切换到想要远程仓库回退分支的对应本地分支,将对应本地分支回退到需要的版本,强推

git push mark master -f #格式:git push [仓库名] [本地分支名]

回退至和远程版本一致

有时候,当发生错误修改需要放弃全部修改时,可以以远程分支作为回退点退回到与远程分支一样的地方

git reset --hard mark/master

撤销Commit操作

git reset --soft HEAD^

--mixed #不删除工作空间改动代码,撤销Commit操作,并撤销git add操作.为默认参数
--soft #不删除工作空间改动代码,只撤销Commit操作,不会撤销git add操作
--hard #删除工作空间代码,撤销Commit操作,撤销git add操作.使用后回退至上次提交前的Commit状态
git commit --amend #修改Commit操作的注释

Reset与Revert区别

git reset 通过把分支记录回退几个提交记录来实现撤销改动。你可以将这想象成“改写历史”。git reset 向上移动分支,原来指向的提交记录就跟从来没有提交过一样。

虽然在你的本地分支中使用 git reset 很方便,但是这种“改写历史”的方法对大家一起使用的远程分支是无效的。为了撤销更改并分享给别人,我们需要使用 git revert。要撤销的提交记录后面会多一个新提交,新提交记录 C2' 引入了更改,这些更改刚好是用来撤销 C2 这个提交的。也就是说 C2' 的状态与 C1 是相同的。

仓库分支

git branch bugFix #创建一个新的bugFix分支
git checkout bugFix #从当前分支切换至bugFix分支
git checkout -b bugFix #创建bugFix分支并切换

分离HEAD

git checkout Commit3 # HEAD->main->Commit3 => HEAD->Commit3 main->Commit3

相对引用

使用 ^ 向上移动一个提交记录,使用 ~<num> 向上移动多个提交记录,如~3

git branch -f main HEAD~3

移动分支可以直接使用 -f 选项让分支指向另一个提交

整理提交记录

git cherry-pick 可以将指定的提交号复制到当前分支后

命令格式 git cherry-pick <提交号> ...

全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务