Git 常用命令

一、基本操作

  1. git init 来在目录中创建新的 Git 仓库。 你可以在任何时候、任何目录中这么做,完全是本地化的。

  2. 使用 git clone 拷贝一个 Git 仓库到本地,让自己能够查看该项目,或者进行修改。

  3. 使用 git add 添加需要追踪的新文件和待提交的更改到暂存区, 然后使用 git statusgit diff 查看有何改动, 最后用 git commit 将你的快照记录。这就是你要用的基本流程,绝大部分时候都是这样的。

  4. 在当前工作目录执行命令:git add . Git 会递归地将你执行命令时所在的目录中的所有文件添加上去.

  5. 执行 git status 以查看在你上次提交之后有啥被修改或者临时提交了, 从而决定自己是否需要提交一次快照,同时也能知道有什么改变被记录进去了。

  6. git diff 显示已写入缓存与已修改但尚未写入缓存的改动的区别,执行 git diff 来查看执行 git status 的结果的详细信息 —— 一行一行地显示这些文件是如何被修改或写入缓存的。
    git diff HEAD —— 显示的是工作目录与上一次提交的更新的区别,无视缓存。

  7. git commit -a 自动将在提交前将已记录、修改的文件放入缓存区,基本上这句话的意思就是,为任何已有记录的文件执行 git add .不过你仍然需要执行 git add 文件名 来添加新文件

  8. git 对本地文件的文件名的大小写是不敏感额,如果修改文件名的大小写不会添加修改,命令行运行下列代码,强制git对大小写敏感
    $ git config core.ignorecase false

  9. git remote 命令列出所有远程主机 使用-v选项,可以参看远程主机的网址

二、 常用命令

1. git branch

【 origin 指的是主机名 master 指的是分支名】

git branch -r 查看远程分支

git branch -a 查看所有分支

git branch -d (branch name) 删除本地分支

git branch (new-branch -name) 创建分支

git branch -v 查看各个分支最后一个提交对象的信息

git branch -m <old_branch_name> <new_branch_name> 重命名本地分支

2. git push

$ git push :

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

执行 git push [alias 远程仓库名] [branch 远程分支名],就会将你的当前 分支推送成为 [alias] 远端上的 [branch] 分支。 让我们试试推送我们的主分支到先前添加的“github”远端仓库上去。

$ git push origin master 如果省略远程分支名,则表示将本地分支推送与之存在"追踪关系"的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。

不带任何参数的git push,默认只推送当前分支,这叫做simple方式。

git push origin --delete <branchName> 删除一个远程分支

git push origin :<branchName> 推送一个空分支到远程分支,其实就相当于删除远程分支

3. git pull

$ git pull

比如,取回origin主机的dev分支,与本地的master分支合并,需要写成下面这样。git pull <远程主机名> <远程分支名>:<本地分支名>

$ git pull origin dev:master

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

$ git fetch

$ git fetch origin dev

$ git merge origin/dev 合并fetch下来的远程dev分支数据到当前分支上

git fetch origin 远程分支名:本地分支名

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

4. git checkout

git checkout -b [分支名] [远程主机名]/[分支名]

5. git log

git log --oneline 显示log一行摘要

git log --author="author-name" 显示某个用户提交的log

git log -p (file-name) 某个文件的提交log

6. git tag

  • 列出现有标签的命令$ git tag
  • 带有通配符的列出命令$ git tag -l 'v1.4.2.*'
  • 新建标签 $ git tag -a v1.4 -m 'my version 1.4'引号里面的是标签说明
  • 把标签推到git服务器上$ git push origin [tagname]
  • 一次推送所有本地新增的标签到git服务器 git push origin --tags

7. git 追踪关系

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

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

git branch --set-upstream master origin/dev

上面命令指定本地master分支追踪远程 origin/dev分支。

但是据说上面--set-upstream这个命令被废弃了,建议使用--track 或者 --set-upstream-to来代替
git branch --set-upstream-to=origin/远程分支名 本地分支名

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

$ git pull origin

上面命令表示,本地的当前分支自动与对应的origin主机”追踪分支”(remote-tracking branch)进行合并。

如何查看本地跟踪分支对应的远程分支

git branch -vv(两个v),就能够看到本地分支跟踪的远程分支。

获取远程服务器上某个分支

加入服务器上被合作的伙伴新创建了一个分支,我们可以通过如下方式来获取:

$ git fetch origin

然后我门会获取到新的分支的名字

值得注意的是,在 fetch操作下载好新的远程分支之后,你仍然无法在本地编辑该远程仓库中的分支。换句话说,在本例中,你不会有一个新的new_added_branch分支,有的只是一个你无法移动的 origin/new_added_branch 指针。

如果要把该内容合并到当前分支,可以运行 git merge origin/new_added_branch。如果想要一份自己的 new_added_branch 来开发,可以在远程分支的基础上分化出一个新的分支来:

$ git checkout -b new_added_branch origin/new_added_branch
Branch new_added_branch set up to track remote branch refs/remotes/origin/new_added_branch.
Switched to a new branch "new_added_branch"

这会切换到新建的 new_added_branch 本地分支,其内容同远程分支 origin/new_added_branch 一致,这样你就可以在里面继续开发了。

三、冲突解决

如果没有冲突的话,merge完成。有冲突的话,git会提示那个文件中有冲突,比如有如下冲突:

<<<<<<< HEAD:test.c

printf (“test1″);

=======

printf (“test2″);

>>>>>>> issueFix:test.c

可以看到 ======= 隔开的上半部分,是 HEAD(即 master 分支,在运行 merge 命令时检出的分支)中的内容,下半部分是在 issueFix 分支中的内容。解决冲突的办法无非是二者选其一或者由你亲自整合到一起。比如你可以通过把这段内容替换为下面这样来解决:

printf (“test2″);

这个解决方案各采纳了两个分支中的一部分内容,而且删除了 <<<<<<<,=======,和>>>>>>> 这些行。

在解决了所有文件里的所有冲突后,运行git add 将把它们标记为已解决(resolved)。

然后使用git commit命令进行提交,merge就算完成了

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

推荐阅读更多精彩内容

  • 分布式版本管理工具 git属于分布式 svn集中式 git安装 git初始化一个仓库 其实就是创建了一个.git隐...
    SnowDragonYY阅读 1,497评论 0 0
  • 一、 Git 命令初识 在正式介绍Git命令之前,先介绍一下Git 的基本命令和操作,对Git命令有一个总体的认识...
    子疯zp阅读 69,711评论 1 18
  • 初始化配置 #配置使用git仓库的人员姓名 git config --global user.name "Your...
    贱精先玍丶阅读 324评论 0 0
  • 还不到一小时,我来到了新的一天的起 始 夜很深了,可是人睡不着 我好不容易学会了哭却也到了...
    叨叨走走阅读 184评论 0 0
  • 3. “你是谁?”小叶站在大门口,朝屋里的男孩问道。 小男孩没有马上回答她,只是停了手中的笔,转头看着她。一个穿着...
    暴走小红帽阅读 312评论 0 2