Git协作流程及常用命令

来源:互联网 发布:设置mysql远程访问 编辑:程序博客网 时间:2024/05/22 14:01

一、Git协作的一般流程

1、创建本地代码仓库或克隆远程仓库

/****创建本地代码仓库****///在需要放置代码仓库的目录下执行该行命令即初始化一个空的仓库git init/****获取远程代码仓库****/git clone [url]//可为克隆的仓库指定新的名字git clone [url] [newName]

完成仓库的创建之后,就可将文件添加到仓库进行管理。

//该命令为需要被管理的文件添加跟踪git add *//提交代码到仓库git commit -m "initial version"

注意:
(1) 为了防止出现各种问题,仓库目录路径中尽量不要包含中文以及特殊字符。


2、创建你的工作分支
一般来说,每一个项目都有一个主分支(默认为master分支),其一般包含了所有已经正式完成的工作。
而每个人的工作最好在各自的分支上进行,直到完成功能才将其合并到主分支。因为不完整的代码可能导致别人无法工作。
同时,当当前工作未完成却必须去解决其他的更为紧急的任务时,也需要新建另外的分支去处理。

//创建分支以及切换分支git branch [myBranchName]git checkout [myBranchName]//下面该行命令等价于上面两行git checkout -b [myBranchName]

3、进行你的工作

经过上面的两步,接下来就可以进行你自己的工作了,但在过程中以下命令会非常有帮助。
(1)查看修改和操作结果

//可显示已修改、已暂存以及未被跟踪的文件情况git status //查看提交历史,显示每一个commit的历史版本信息,可获得版本信息用于版本回滚git log//显示提交差异,还可以配置其他参数git log -P//可查看所有的操作记录,在删除分支后还可以恢复git reflog

(2)比较文件的不同
在休假回来或是因为临时转到其他任务回来时忘记之前修改了什么地方,就需要查看文件版本间的不同。
由于 git 具有工作区、暂存区(Index)以及版本库(HEAD)三个部分,他们之间的比较如下:

//不带参数比较的是工作区和暂存区git diff [fileName]//比较暂存区和版本库git diff --staged [fileName]git diff --cached [fileName]//比较工作区和版本库git diff HEAD [fileName]

(3)撤销修改

//从暂存中撤回,unstagegit reset HEAD <fileName>//从仓库中取出文件覆盖本地修改,会丢失修改git checkout <fileName>

(4)文件删除
如果想要删除文件,你可以在本地直接删除或使用 rm 命令删除。
但这样并没有在仓库中进行删除,那么你可以进行如下操作:

//若是误删除,可重新恢复git checkout [fileName]//若是想在仓库中也删除,可运行如下命令git rm [fileName]git commit -m 'delete file'

(5)获取更新
如果在你拉取代码之后有人提交了更新,并且你依赖于那些更新,所以你需要获取其更新,并与你本地代码合并 。有两种方法实现:

git fetch [origin] //默认是获取所有分支的更新,也可指定具体分支的更新git fetch [origin] [branch]//获取更新之后,需要切换需要将其合并到当前分支git merge [branch]

另外,也可以使用直接使用git pull

//git pull 等于 fecth 加上 mergegit pull

另外,默认的合并方式是fast-forward,其不会保留分支合并信息,可禁用该模式,保留合并信息

git merge --no-ff -m 'merge branch' [branch]

4、提交到本地分支
在完成相应的修改之后就可以提交代码到仓库了,

git add [fileName]git add *git commit -m 'add file'

如果你不想把某些文件进行管理,那么可以在仓库目录下新建名称为 .gitignore 的文件,并将不想被管理的文件加入其中,支持使用通配符。例如

# Untracked files:/bin//build//out/*.log*.class# Package Files #*.jar*.war# Project Files #.settings.project.classpath

.gitignore 文件可以像其他文本文件一样被管理,同时需要注意的是,如果.gitignore未被跟踪提交,那么他只对没有被跟踪提交的文件有效,对已经被跟踪提交的文件无效。

注意:

(1)每一次修改,都需要调用 git add 将文件加入到暂存区,因为 git commit 提交的是暂存区的内容。
(2)commit 的 -m 参数需要写上,不写上或不完整将打开编辑器让你继续编辑。


5、推送代码到远端以及分支合并
在把本地仓库的提交推动到远端之前,你应该先从远端获取最新的版本,并与你本地的代码进行合并,如果存在冲突需要解决冲突,然后才能进行提交。因为在你上次拉取代码之后,可能有人更新了代码。
之后可以使用push命令提交代码

git pull//对冲突等问题其进行处理git status//确保没有是自己想要的样子就可以提交了

如果是从本地新建的仓库的,那么需要将其关联到远端仓库

git remote add origin git@server-name:path/repo-name.git

如果是从远端仓库进行clone,那么本地的仓库已经和远端的仓库自动关联。
关联之后就可以使用以下命令进行推送代码了。

//远程分支一般为origingit push [remote branch] [local branch]git push origin mybranch//如果是第一次提交,即在远端并没有你当前的分支,那么应加上一个参数git push -u [remote branch] [local branch]

二、其他重要命令

(1)stash

//该命令可多次使用,其将工作区的内容暂时保存,但不包括需要未被跟踪的文件git stash //恢复stash,但同时会删除satsh,无参数默认恢复最新的git stash pop [stashID]//会列出stash IDgit stash list//恢复stash,但需要手动删除git stash apply [stashID]//删除stashgit stash drop [stashID]

(2)tag
类似分支指针,但无法移动,一般用于指定版本号等

//默认在最新的commit上git tag <tagname>git tag <tagname> <commitID>//列出所有taggit tag//git show <tagname>//git tag -a v1.0 -m 'version 1'//本地删除taggit tag -d <tagname>  //远端删除tag   git push origin :refs/tags/<tagname>//推送tag到远端git push origin <tagname>git push origin --tags
0 0
原创粉丝点击