您的位置:首页 > 编程语言

git (github)的基本使用

2017-05-27 13:21 309 查看

一、基本操作

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

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

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

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

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

git diff
显示已写入缓存与已修改但尚未写入缓存的改动的区别,执行
git diff
来查看执行
git status
的结果的详细信息 —— 一行一行地显示这些文件是如何被修改或写入缓存的。

git diff HEAD
—— 显示的是工作目录与上一次提交的更新的区别,无视缓存。

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

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

$ git config core.ignorecase false


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 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