Git 常用命令

作者: 千山万水迷了鹿 | 来源:发表于2017-04-06 17:08 被阅读40次

一、基本操作

  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就算完成了

相关文章

网友评论

    本文标题:Git 常用命令

    本文链接:https://www.haomeiwen.com/subject/obitattx.html