Git 相关

Git常用命令详解

2020-10-11  本文已影响0人  越前君

版本控制工具有很多,比如 CVS、SVNGit 等,但目前用得最广泛的应该就是 Git 了。

下面介绍一些常用的 Git 命令。

一、全局、本地必要配置

挺有必要的,会更清晰的跟踪提交者的信息。

# Git global setup
$ git config --global user.name "your_name"
$ git config --global user.email "your_ email"

# Git local setup
git config user.name "your_name"
git config user.email "your_email"

二、初始化仓库

# 初始化
$ git init

# 与远程仓库建立连接
$ git remote add origin [your_repository_address]

# 修改远程仓库地址
$ git remote set-url origin [your_repository_address]
# 或者先删后加
$ git remote rm origin
$ git remote add origin [your_repository_address]
# 或者直接修改 .git/config 文件

三、关于克隆仓库

$ git clone [repository_address]

# 与上面不同的是,它会在当前目录下创建一个 your_folder_name 的目录,而不再是与仓库名称同名的目录了
$ git clone repository_address [your_folder_name]

以上这种方式默认是克隆 master 主分支,而且通过 git branch --list 能看到克隆后在本地也只有这一个分支。

如果再通过新建分支再拉取指定分支,甚至可能还需要解决冲突,太繁琐了。

那么,如何快速有效的直接克隆远程指定分支?

$ git clone -b [指定分支名] [远程仓库地址]

# 亦可以指定目录名称
$ git clone -b [指定分支名] [远程仓库地址] [your_folder_name]

比如,我远程有 masterdevelop 两个分支,通过 git clone -b develop git@github.com:toFrankie/git_dev_demo.git 会自动克隆 develop 分支到本地,同样克隆后本地只有 develop 一个分支。

*部分内容源自 Git 克隆远程仓库的指定分支

四、分支操作

1. 列出所有分支
# 列出所有本地分支
$ git branch

# 列出所有远程分支
$ git branch -r

# 列出所有本地分支和远程分支
$ git branch -a
2. 新建分支

若分支已存在,以下命令都会失败

# 新建分支,但依然停留在当前分支
$ git branch [branch-name]

# 新建分支,并切换至该分支。
$ git checkout -b [branch-name]

# 根据已有分支创建新的分支
$ git checkout -b [branch-name] origin/<远程分支名称>
# 例如,创建一个远程 develop 分支的本地分支
$ git  checkout -b develop origin/develop

# 重命名本地分支名称
$ git branch -m [old-branch-name] [new-branch-name]
3. 合并分支
# 合并指定分支到当前分支
$ git merge [branch-name]
4. 删除分支
# 删除本地指定分支
$ git branch -d [branch-name]

# 删除远程分支
git push origin --detele [branch-name]

# 删除远程分支(方法二:向远程分支推送一个空分支)
$ git push origin :<远程分支名>
5. 重命名远程分支

要重命名远程分支名称,其实就是先删除远程分支,然后重命名本地分支,再重新推送一个远程分支。例如将远程分支 dev 重命名为 develop。

# 1. 删除远程分支 dev
$ git push origin --delete dev

# 2. 重命名本地分支 dev 为 develop
$ git branch -m dev develop

# 3. 推送本地分支 develop
$ git push origin develop

五、暂存提交推送

1. 暂存更改

关于 git add 命令,需要注意一下 1.x 版本与之有些不同,最后有标注。

# 提交新文件(new file)、被修改(modified)文件以及被删除(deleted)文件。
$ git add .

# 提交新文件(new file)、被修改(modified)文件以及被删除(deleted)文件。
$ git add -A

# 提交被修改(modified)和被删除(deleted)文件,不包括新文件(new file)
$ git add -u

# 提交新文件(new file)和被修改(modified),不包括被删除(deleted)文件
$ git add --ignore-removal .

# 获取帮助
$ git add -h

# 以上为 2.x 版本的标准。
# 以下为 1.x 版本的区别之处:
# 1.x 的 `git add .` 不包括被删除文件(deleted)
# 1.x 不存在 `git add --ignore-removal .` 命令,但其作用等同于 1.x 版本 `git add .`
2. 提交暂存
# 提交已暂存文件
$ git commit -m 'commit message'

# 提交已暂存文件,以及跟踪过但未被添加到暂存的文件
# 注意:git commit -am 可以写成 git commit -a -m,但不能写成 git commit -m -a
$ git commit -am 'commit message'

# 修改最后一次的提交说明(但 commitId 会改变哦,因为它是一次全新的提交)
$ git commit --amend

注意一下,git commit --amend 命令,只能修改最新一次的提交说明 ,执行命令进入 Vim 模式(具体如何插入编辑,保存退出不展开赘述了,相信你们都会了)。亦可通过 git commit --amend -m 'Commit Message' 直接覆盖不用进入 vim 编辑器。

需要注意的是,该命令会导致 commitId(快照唯一标识)发生改变。可通过 git log(查看历史提交记录)前后对比发现。其实呢,修改过的提交实际上是全新的提交,而先前的提交将不再位于您当前的分支上。

该命令其实还有很多选项,还能更改提交文件等,想了解请看这里

3. 推送至远程分支

主要用于将本地更新推送到远程主机,但不同简化形式、命令参数产生延申效果。

一般地,远程主机名 remote 都为 origin

# 不省略本地分支名和远程分支名情况下,冒号(:)前后是没有空格的
$ git push <远程主机名> <本地分支名>:<远程分支名>
# git push origin master:master

还有几种简化形式的写法:

# 将本地分支推送到远程主机上的同名分支。如果远程分支不存在,则会自动创建一个远程分支。
$ git push <远程主机名> <本地分支名>
# git push origin master
# 将一个“空的本地分支”推送至远程分支,即表示删除指定的远程分支。
$ git push <远程主机名> :<远程分支名>
# git push origin :master

# 等同于
$ git push origin --delete <远程分支名>
# 将当前分支推送至远程主机上的对应分支
$ git push <远程主机名>
# git push origin

这种形式要求当前本地分支和远程分支之间存在追踪关系。

怎么理解?

首先我不推荐,而且平常也不用这种形式的进行推送的。假如有存在 masterdevelop 两个分支,当与远程分支建立追踪关系的是 master 分支,那么处于 develop 分支时,使用 git push origin 形式推送至远程主机时就会提示:The current branch test has no upstream branch.,然后再执行 git push --set-upstream origin develop 即可使用这种形式的推送。

# 将当前分支推送至远程主机对应分支
$ git push

这种形式除了要求当前本地分支和远程分支之间存在追踪关系之外,还要求当前当前分支只有一个追踪分支。

# 将本地分支推送到远程主机上的同名分支。如果远程分支不存在,则会自动创建一个远程分支。
$ git push -u <远程主机名> <本地分支名>
# git push -u origin master

这种形式适用于当前分支与多个主机存在追踪关系,可以利用 -u 指定一个默认的主机,这样后面就可以不加任何参数适用 git push 推送对应的分支了。

六、标签操作

# 列出所有 tag
$ git tag

# 查看 tag 信息
$ git show [tag-name]

# 轻量标签
$ git tag [tag-name]

# 附注标签
$ git tag -a [tag-name] -m [message]
# 例如,打一个 v1.0.0 的标签
$ git tag -a v1.0.0 -m 'v1.0.0 release'

# 后期打标签
$ git tag -a [tag-name] [version]

# 提交指定 tag
$ git push origin [tag-name]

# 提交所有 tag
$ git push origin --tags

# 删除本地 tag
$ git tag -d [tag-name]

# 删除远程 tag
$ git push origin --detele tag [tag-name]
# 还可以向远程推送一个“空标签”,等同于删除远程标签
$ git push origin :refs/tags/<tag-name>


未完待续...

1、拷贝源代码

git clone git@git地址

cd 项目目录

2、根据已有分支创建新的分支

git checkout -b yourbranchname origin/oldbranchname

3、推送到git

git push origin yourbranchname



https://blog.csdn.net/duxing_langzi/article/details/80295573

5、 查看全部分支(包含本地和远程) :git branch -a

6、根据指定版本号创建分支: git checkout -b branchName commitId
7、清理本地无效分支(远程已删除本地没删除的分支): git fetch -p
8、如果分支太多,还可以用此命令进行分支模糊查找: git branch | grep 'branchName'



重要
git fetch & pull详解

git reflog --date=local | grep GJ-62730 当前的git分支是基于哪个分支创建的
git push origin –tags # 将本地所有标签一次性提交到git服务器

git 当前的git分支是基于哪个分支创建的


git log和git reflog可查看commitId,commitId是快照的唯一标识,二者区别?



对 Git 分支 master 和 origin/master 的一些认识
上一篇 下一篇

猜你喜欢

热点阅读