git常用命令

1719457313253.jpg

设置user的name和email

设置name: $ git config --global user.name "xxx"

设置email:git config --global user.email "email@gmail.com"



===============================常用操作_start===============================

常用操作

推送本地分支关联远程git push --set-upstream origin 分支名
从远程仓库里拉取一条本地不存在的分支时git checkout -b 本地分支名 origin/远程分支名

git fetch是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中。
git pull则是将远程主机的最新内容拉下来后直接合并,即:git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决。

git fetch <远程主机名>这个命令将某个远程主机的更新全部取回本地

提交:git add .

提交:git commit -m '备注'

推送本地分支到某一远程分支,也可以直接git push,则为推送和当前本地分支同名的远程分支:git push origin 本地分支:远程分支

删除本地分支:git branch -d 本地分支名

删除远程分支名

git push origin --delete 远程分支名
git push origin :远程分支名 #删除远程分支名(这个方法是推送一个空分支到远程分支,从而删除)

重命名:

重命名本地分支

git branch -m 原本地分支名 重命名后的本地分支名

重命名远程分支。

在git中重命名远程分支,其实就是先删除远程分支,然后重命名本地分支,再重新提交一个远程分支。

gitignore无效的情况

问题

在.gitignore文件中添加某文件,想对其进行忽略,但是通过git status查看仍然显示该文件的状态。

原因

在git库中已经存在该文件(以前push过),而.gitignore仅对还没有加入到版本管理的的文件起作用

解决办法:

在git库中删除该文件(或者先移到项目目录外),并提交

拉取远程分支

git fetch origin branchname:branchname(不会切换到新分支)
可以把远程某各分支拉去到本地的branchname下,如果没有branchname,则会在本地新建branchname

把要合并的本地分支合并到当前分支

git merge 要合并过来的本地分支

修改远程地址 (查询当前远程地址:git remote -v)

  • 方法一:直接修改

git remote set-url origin 新远程仓库地址

  • 方法二:先删除,后添加

git remote rm origin#删除远程分支
git remote add origin 新远程仓库地址#重新添加远程分支

  • 新增其他远程仓库
git remote add repo1 <repository-url-1> # 新增第一个远程仓库
git remote add repo2 <repository-url-2># 新增第二个远程仓库
# repository-url-1和repository-url-2是对应仓库url
# repo1 和repo2随便起,等于别名

git push repo1 master # 推送master到第一个远程仓库
git push repo2 master # 推送master到第二个远程仓库

gitremote命令用于管理远程仓库,在本地仓库中添加、删除和查看远程仓库,所以添加的远程仓库,只在本地,不会在远程。
git remote -v:查看当前所有远程仓库的详细信息,包括名称和URL
git remote rename:重命名一个远程仓库的名称。
git remote remove:删除一个远程仓库,使其不再与本地仓库关联
git remote show : 查看所有远程仓库

# 设置git push的默认分支
git branch --set-upstream-to=origin/<branch_name>
这个命令会将你当前的分支设置为跟踪指定的远程分支。意思是本来dev分支是默认推送到远程的dev分支,现在这样就可以,dev默认推送到test分支

# 你可以在第一次push到远程仓库的时候,使用-u选项来指定默认的上游仓库:
git push -u <origin> <branch_name> # git push -u repo1 master
这个命令会将origin设置为你的默认远程仓库,并将你当前的分支设置为跟踪指定的远程分支。

# 查询默认远程仓库 :在仓库根目录输入git config -e或者cat .git/config
--------------------------------------------------------------
[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[remote "origin"]
    url = git@e.coding.net:shuaiqifeng/webhook.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = repo1
    merge = refs/heads/master
[remote "repo1"]
    url = git@gitee.com:fizz001/webhook.git
    fetch = +refs/heads/*:refs/remotes/repo1/*
--------------------------------------------------------------
其中[branch "master"]的信息就是显示默认远程分支了

创建并切换分支

git checkout -b 分支名

查看两个提交之间修改过的文件

git diff --name-only <commitId-1> <commitId-2>注意:commitId 为前八位

本地测试git

  1. 新建一个目录a,然后执行git init,然后再执行pwd,复制路径url
  2. 新建另一个目录b,然后执行,用上面目录a步骤的url,执行git clone url(若是项目在其他的服务器,则git clone 用户名(能打通ssh的用户)@ip(内网ip):/url)
  3. 若b的目录需要push,则a目录的分支不能停在master,不然push不上去,需要切换到另外的分支。

===============================常用操作_end===============================


===============================远程仓库_start===============================

远程仓库

注:

  1. 本地和远程第一次操作时需要关连:加上-u参数。
  2. git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
    git push -u 远程仓库分支 本地仓库分支:
    eg:$ git push -u origin master
  3. 切换关联的远程分支
    $git branch --set-upstream-to=origin/remote_branch your_branch #remote_branch是远程分支名 your_branch是本地分支名
    eg:git branch --set-upstream-to=origin/story_v540 story_550
1.先有本地仓库,然后关联远程仓库

要关联一个远程库,使用命令$ git remote add origin git@server-name:path/repo-name.git

关联后,使用命令$ git push -u origin master第一次推送master分支的所有内容

此后,每次本地提交后,只要有必要,就可以使用命令$ git push origin master推送最新修改

2.先有远程仓库,关联本地仓库

$ git clone git@server-name:path/repo-name.git

===============================远程仓库_end===============================


===============================多人合作_start===============================

多人协作

查看远程库的信息

git remote
git remote -v #显示更详细的信息

流程

1.先pull到本地
2.合并,如果合并有冲突,则解决冲突,并在本地提交commit
3.后push到服务器

注意:如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name
===============================多人合作_end===============================



===============================stash_start===============================

stash

前提:必须是处于git下的文件,未add到git的文件无法使用

保存当前工作进度,将工作区和暂存区恢复到修改之前。

git stash

作用同上,message为此次进度保存的说明。

git stash save message

显示保存的工作进度列表,编号越小代表保存进度的时间越近。

git stash list

显示做了哪些改动,默认show第一个存储,如果要显示其他存贮,后面加stash@{$num},比如第二个 git stash show stash@{1}。

git stash show

恢复工作进度到工作区(不会删点原来的stash@{num}),此命令的stash@{num}是可选项,在多个工作进度中可以选择恢复,不带此项则默认恢复最近的一次进度

git stash apply stash@{num}

恢复工作进度到工作区(会删点原来的stash@{num}),此命令的stash@{num}是可选项,在多个工作进度中可以选择恢复,不带此项则默认恢复最近的一次进度

git stash pop stash@{num}

删除一条保存的工作进度,此命令的stash@{num}是可选项,在多个工作进度中可以选择删除,不带此项则默认删除最近的一次进度相当于git stash drop stash@{0}

git stash drop stash@{num}

删除所有缓存的stash

git stash clear

从最新的stash创建分支。

场景:当储藏了部分工作,暂时不去理会,继续在当前分支进行开发,后续想将stash中的内容恢复到当前工作目录时,如果是针对同一个文件的修改(即便不是同行数据),那么可能会发生冲突,恢复失败,这里通过创建新的分支来解决。可以用于解决stash中的内容和当前目录的内容发生冲突的情景。
命令:git stash branch

删除所有保存的工作进度。
===============================stash_end===============================



===============================回滚_start===============================
【本地回滚】

  • 未执行git add

git checkout file`#file是要恢复的文件名。注意:这是恢复到未修改前

  • 已经执行git add

git reset HEAD file#file是要恢复的文件名。注意:这是恢复到未add前

  • 已经commit

git reset HEAD^ file#file是要恢复的文件名。注意:这是恢复到未add前

  • 全部回退,已commit
  • git reset --hard HEAD^ #退回上个版本
  • git reset --hard HEAD^^ #退上上一版本
  • git reset --hard HEAD~20 #退前第20个版本

【远程回滚】:

这个是重点要说的内容,过程比本地回滚要复杂
原理:先将本地分支退回到某个commit,删除远程分支,再重新push本地分支

提示:最好先把远程分支先备份再删除,重新push没问题后再删除

===============================恢复文件_end===============================

===============================标签_start===============================
1、已打的标签列表:git tag;如:git tag v1.0.1
2、给当前分支打上一个标签:git tag 标签名;如:git tag v1.0.1
3、默认是在本地打上标签,而并不会推送到远程,所以需要推送到远程:git push origin 标签名;如:git push origin v1.0.1
4、Git中不能真的检出一个标签,因为他们并不能像分支一样来回移动。如果想要工作目录与仓库中特定地标签版本完全一致,可以使用git checkout -b [新分支名] [标签名]在特定地标签上创建一个新分支。如:git checkout -b version1 v1.0.0
5、删除本地标签git tag -d [标签名]
6、删除远程标签git push origin :refs/tags/[标签名]

注意:当标签名和某个分支相同,则推送到远程时会报错。git push origin 标签名;报错信息:error: src refspec dev matches more than one;解决办法就是删除标签,重新起另外的标签名,git tag -d [标签名]
===============================标签_end================================

删除本地有但在远程库已经不存在的分支
git remote prune origin

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,919评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,567评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,316评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,294评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,318评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,245评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,120评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,964评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,376评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,592评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,764评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,460评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,070评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,697评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,846评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,819评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,665评论 2 354

推荐阅读更多精彩内容