git常用命令

137 阅读7分钟

Git拉取远程分支到本地

git fetch origin xxx // xxx替换为远程分支名

git checkout -b xxx origin/xxx // origin/xxx替换为远程分支名

分支合并到项目仓库

git remote add origin xxx 关联private仓库

git fetch --all 更新两个remote版本库信息

git checkout -b xxx 创建项目分支(基本用不到,PLM会自动创建分支)

git merge xxx 合并xxx分支到项目仓库

git push origin xxx 推送到远程项目分支

将某分支的某次提交合并到另一分支

git checkout develop 切换到develop分支

git log 查找需要合并的commit记录,比如commitID:7fcb3defff

git checkout master 切换到master分支

git cherry-pick xxx 该条commit记录合并到了master分支

git pull origin master 提交master到远程

本地新建分支并推送至远程分支

git branch 查看当前分支

git branch -a 查看所有分支,包含远程分支

git checkout -b ying 新建分支

git push origin ying:ying .推送本地分支到远程分支(远程分支与本地分支同名)

git branch --set-upstream-to=origin/ying .让本地分支与远程分支建立关联

解决本地代码修改后的冲突

git stash 备份当前工作区内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前工作区内容保存到Git栈中

git pull 拉取服务器上当前分支代码

git stash pop 从Git栈中读取最近一次保存的内容,恢复工作区相关内容。同时,用户可能进行多次stash操作,需要保证后stash的最先被取到,所以用栈(先进后出)来管理;pop取栈顶的内容并恢复

git config

git的设置命令

git config --list 显示当前git的配置信息

git config -e 编辑git配置文件,针对当前仓库

git config -e --global 针对系统上所有仓库

示例:

git config --global user.name "xxx"

git config --global user.email xxx

git status

查看上次提交后是否对文件进行再次修改

git status -s 获取简短的输出结果

git diff

比较文件的不同,比较工作区与暂存区的差异

git diff 查看尚未缓存的改动

git diff --cached 查看已缓存的改动

git diff HEAD 查看已缓存与未缓存的所有改动

git diff --staged 查看摘要而非整个diff

git diff [first-branch] ... [second-branch] 显示两次提交之间的差异

git reset

回退版本,指定回退到某一次提交的版本

git reset [--soft | --mixed | --hard] [HEAD]

--mixed 为默认,用于重置暂存区的文件与上一次的commit保持一致,工作区内容保持不变

git reset HEAD^ 回退所有内容到上一个版本

git reset HEAD^ [file] 回退指定文件的版本到上一个版本

git reset 052e 回退到指定的版本

--soft 用于回退到某个版本

git reset --soft HEAD~3 回退到上上上一个版本

--hard 撤销工作区所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前所有的信息提交

git reset --hard HEAD

HEAD 表示当前版本

HEAD^ 上一个版本

HEAD^^ 上上一个版本

HEAD^^^ 上上上一个版本

git rm

用于删除文件

git rm 将文件从暂存区和工作区删除

git rm -f 强制删除选项-f,用于删除之前修改过并且已经放在暂存区域的文件

git rm --cached 把文件从暂存区移除,但是保留在当前工作目录

git rm -r * 递归删除整个目录下所有子目录和文件

git mv

用于移动或重命名一个文件,目录,或软连接

git mv [file] [newfile] file文件名重命名newfile

git mv -f [file] [newfile] 新文件名已存在,还是要重命名,使用-f参数

git log

查看提交历史

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

git log --oneline 查看历史记录的简洁的版本

git log --graph 查看历史中出现了分支、合并

git log --reverse 逆向显示所有日志

git log --author=name 查找指定用户的提交日志

git log --since | --before | --until | --after 查找指定时间开始,之前,之后的记录

git tag

git tag -a v1.0 创建一个带注解的标签

git tag -a -m ''备注" 指定标签信息命令

git tag -s -m "备注" PGP签名标签命令

git ls-remote -t 查看远程 tags

git tag -l 查看本地 tag

git push origin --delete tag xxx 删除远程 tags

git tag -f xxx 更新tag

git push origin -f xxx 推送tag

git tag -d xxx 删除本地 tag

git fetch origin --prune-tags 拉取远程 tags

git init

初始化git仓库,生成一个.git目录

git clone

从现有仓库拷贝项目,命令如下:

git clone

参数说明:

  • repo:Git 仓库。

  • directory:本地目录

git remote

用于在远程仓库的操作

git remote -v 会显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL

git remote show [remote] 显示某个远程仓库的信息

git remote add [shortname] [url] 添加远程版本库

git remote rename old_name new_name 修改仓库名

git fetch

用于从远程获取代码库,执行完成后,你将会拥有那个远程仓库中所有分支的引用,可以随时合并或查看

git fetch [alias] 从远程获取它有你没有的数据

git pull

用于从远程获取代码并合并本地的版本,git pull 其实就是 git fetch 和 git merge FETCH_HEAD 的简写

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

示例:

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

git add

添加文件到暂存区

git add [file1] [file2] ... 添加一个或多个文件到暂存区

git add [dir] 添加指定目录到暂存区,包括子目录

git add . 添加当前目录下的所有文件到暂存区

git commit

将暂存区的内容添加到本地仓库

git commit -m [message] 提交暂存区到本地仓库

git commit [file1] [file2] ... -m [message] 提交暂存区指定的文件到本地仓库

git commit -a 修改文件后不需要git add直接提交文件

git push

用于从将本地的分支版本上传到远程并合并

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

git push --force origin master 如果本地版本与远程版本有差异,但又要强制推送可以使用 --force 参数

git push origin --delete master 删除主机的分支

git branch

创建分支

git branch (branchname) 创建分支命令

git branch -d (branchname) 删除分支

git checkout

切换以及创建分支

git checkout # 分支切换

git checkout - # 切换到上一个分支

git checkout -b # 从当前分支创建并切换到本地分支

git checkout -b origin/ # 从远程分支中创建并切换到本地分支

git merge

分支合并

git merge [alias]/[branch] 将服务器上的任何更新(假设有人这时候推送到服务器了)合并到你的当前分支

git stash

将工作区合暂存区的修改存储到“储藏栈”(stash stack)的缓存区中

git stash # stash文件

git stash pop # 将位于栈顶的修改弹出

git stash list # 列出所有储藏栈内容,例如:stash@{0}: WIP on workbranch: 56cd5d4 Revert "update old files"; stash@{1}: WIP on project1: 1dd87ea commit "fix typos and grammar"

git stash pop stash@{1} # 恢复指定序号的修改,将弹出1dd87ea,也可用apply替代pop

git cherry-pick

将指定的提交(commit)应用于其他分支,简称“捡取”

注意:cherry-pick会产生一个新的commit id,与被捡取的提交哈希值不同。

git cherry-pick 77421b5afe0 # 将77421b5afe0捡取到当前分支

git cherry-pick ^.. # 拾取start-commit-id ~ end-commit-id区间的提交

git reflog

可以查看所有分支的所有操作记录(包括(包括commit和reset的操作),包括已经被删除的commit记录,git log则不能察看已经删除了的commit记录

git reflog show 查看当前分支是基于哪个分支创建

git ls-files

显示工作区的文件的信息

git commit --no-verify -m

跳过husky与pre-commit检测机制