git常用命令

下面是自己学习使用git的常用的命令,还有些使用过程中碰到问题的解决办法,现整理如下。

git clone 从远程主机克隆一个版本库

$ git clone <版本库的网址>

$ git clone <版本库的网址> <本地目录名> (线上目录名和本地不一样)

git remote 列出所有远程主机名 (便于管理,git要求每个远程主机都带一个主机名)

$ git remote -v 查看远程主机网址

$ git clone -o jQuery https://github.com/jquery/jquery.git  (克隆版本库时所有主机自动被命名为origin。若用-o可以改变命名)

$ git remote show <主机名>  (查看主机详细信息)

$ git remote add <主机名> <网址> (添加远程主机)

$ git remote rm <主机名> (删除远程主机)

$ git remote rename <原主机名> <新主机名> (修改远程主机名)

git fetch

git fetch命令通常用来查看其他人的进程,因为它取回的代码对你本地的开发代码没有影响。

默认情况下,git fetch取回所有分支(branch)的更新。

$ git fetch <远程主机名> <分支名>  (取回特定分支的更新)

$ git fetch origin master (比如取回origin主机的master分支)

$ git checkout -b newBrach origin/master (git fetch取回远程分支后可以基于此创建一个本地分支)

git pull

git pull命令的作用是,取回远程主机某个分支的更新,再与本地的指定分支合并

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

取回origin主机的next分支,与本地的master分支合并,需要写成下面这样。

$ git pull origin next:master

如果远程分支是与当前分支合并,则冒号后面的部分可以省略。

$ git pull origin next

上面命令表示,取回origin/next分支,再与当前分支合并,实质上,这等同于先做git fetch,再做git merge

在某些场合,Git会自动在本地分支与远程分支之间,建立一种追踪关系(tracking)。比如,在git clone的时候,所有本地分支默认与远程主机的同名分支,建立追踪关系,也就是说,本地的master分支自动”追踪”origin/master分支。

Git也允许手动建立追踪关系。

git branch –set-upstream master origin/next

上面命令指定master分支追踪origin/next分支。

如果当前分支与远程分支存在追踪关系,git pull就可以省略远程分支名。

git push

将本地分支的更新,推送到远程主机

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

注意,分支推送顺序的写法是<来源地>:<目的地>,所以git pull是<远程分支>:<本地分支>,而git push是<本地分支>:<远程分支>。

$ git push -f <远程主机名> <本地分支名>:<远程分支名> (强制提交,非自己的分支强烈不建议使用)

从远程pull一个本地不存在的分支的方法?

1、git checkout -b local_branch origin/remote_branch

2、git fetch将远程分支信息获取到本地,在执行1的方法。

git的选择性合并

具体操作步骤:

假如在当前的A分支上要合并B分支的某一个文件

先切回到A分支

然后执行 git checkout B xx.php

xx.php直接会覆盖A分支上的xx.php文件

(注意会直接将文件覆盖,并不会合并文件,比如在A的xx.php有修改,在B的xx.php有修改,执行上述操作会直接把B的xx.php覆盖A,若想解决用下面的步骤)

先在A分支的基础上建一个 A-temp分支,拿这个A-temp分支和B分支合并,之后切回到A分支,然后把A-temp分支的文件覆盖A分支相对应的文件即可。

其它命令

提交:git commit -a

对最近一次commit的进行修改:git commit -a –amend

commit之后,如果想撤销最近一次提交(即退回到上一次版本)并本地保留代码:git reset HEAD^

合并分支:(merge from) $ git checkout master

$ git merge mybranch (merge from mybranch)

删除分支: $ git branch -d mybranch

强制删除分支: $ git branch -D mybranch

列出所有分支: $ git branch

查看各个分支最后一次提交: $ git branch -v

查看哪些分支合并入当前分支: $ git branch –merged

查看哪些分支未合并入当前分支: $ git branch –no-merged

更新远程库到本地: $ git fetch origin

推送分支: $ git push origin mybranch

取远程分支合并到本地: $ git merge origin/mybranch

取远程分支并分化一个新分支: $ git checkout -b mybranch origin/mybranch

删除远程分支:$ git push origin :mybranch

分支合并后删除文件问题

问题:A分支有10个文件,B分支有8个文件,这8个文件在A分支和B分支都是一样的,现在切换到A分支执行合并命令,结果A分支的两个文件被删除啦,但是还想在A分支保留那两个文件,该如何处理。

解决:merge的概念是 “把其他分支的变更合并到本分支”。在其他分支删除也是一种merge需要合并的变更

先将A创建一个临时分支temp_A,将A和B合并,在将temp_A把A删除的两个文件还原

$ git checkout (含有想恢复的文件的commit) — (想恢复的文件1的路径) (想恢复的文件2的路径)

原文地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、基本操作 用 git init 来在目录中创建新的 Git 仓库。 你可以在任何时候、任何目录中这么做,完全是...
    千山万水迷了鹿阅读 3,173评论 0 0
  • 分布式版本管理工具 git属于分布式 svn集中式 git安装 git初始化一个仓库 其实就是创建了一个.git隐...
    SnowDragonYY阅读 5,381评论 0 0
  • 写个小故事。 我第一次百度中国对“婚龄”的说法,是为了查我爷爷奶奶的婚龄叫什么。可惜,十五年之后婚龄就取整数年定名...
    肆囍阅读 4,461评论 5 3
  • 这周看一本小破书,看完吐了二十分钟,然后把它从我的记忆里狠狠的抹掉了。《红拂夜奔》还差一点点,继续还是没看完。所以...
    噗噗大王阅读 5,906评论 0 51
  • 1. Do one thing at a time. 2. Know the problem. 3. Learn ...
    2fa222542bfe阅读 3,973评论 0 2

友情链接更多精彩内容