git pull VS git fetch&merge(good)

简介: 从图中可以看到,git fetch和git pull的区别, git fetch 不会自动的将结果merge到本地,只是将远程版本同步到本地版本库,而不会merge到本地副本。 git pull  将会直接把working directory中的内容覆盖掉。

从图中可以看到,git fetch和git pull的区别,

  • git fetch 不会自动的将结果merge到本地,只是将远程版本同步到本地版本库,而不会merge到本地副本。
  • git pull  将会直接把working directory中的内容覆盖掉。

使用git fetch和git pull都可以更新远程仓库的代码到本地,但是它们之间还是有区别。

git fetch 

1 git fetch origin master
2 git log -p master..origin/master
3 git merge origin/master

1. 从远程的origin仓库的master主分支更新最新的版本到origin/master分支上  

2. 比较本地的master分支和origin/master分支的差别  

3. 合并内容到本地master分支

git pull

相当于git fetch 和 git merge,即更新远程仓库的代码到本地仓库,然后将内容合并到当前分支。

所以,简单的说git pull相当于git fetch后再做一个git merge。那么它们具体的区别如何分析呢,这就需要我们再认识下git了,先看看下面这张图:

我们知道,git其实有好几个区,工作区(workspace)、暂存区(index)、本地仓库(local repository),当然还有远程仓库(remote repository)。远程仓库为我们保存一份代码拷贝,如github,而工作区、暂存区和本地仓库都在本地,这就是为什么没有网络我们也照样使用git提交(commit)代码更新,因为提交仅是提交到本地仓库,待有网络之后可以再推送(push)到远程仓库。

正如上图所示,git fetch是将远程仓库的更新获取到本地仓库,不影响其他区域。而git pull则是一次性将远程仓库的代码更新到工作区(同时也会更新本地仓库)。

所以,git fetch更安全一些,因为在merge前,我们可以查看更新情况,然后再决定是否合并。

http://www.cnblogs.com/songshu120/p/5125000.html

 

git checkout的主要功能就是迁出一个分支的特定版本。默认是迁出分支的HEAD版本
示例:
git checkout master     //取出master版本的head。
git checkout tag_name    //在当前分支上 取出 tag_name 的版本
git checkout  master file_name  //放弃当前对文件file_name的修改
git checkout  commit_id file_name  //取文件file_name的 在commit_id是的版本。commit_id为 git commit 时的sha值。
$ git checkout -- hello.rb
这条命令把hello.rb从HEAD中签出.
$ git checkout .
这条命令把 当前目录所有修改的文件 从HEAD中签出并且把它恢复成未修改时的样子.
注意:在使用git checkout  时,如果其对应的文件被修改过,那么该修改会被覆盖掉。

NAME

git-checkout - Checkout a branch or paths to the working tree

 

 

 

https://git-scm.com/book/zh/v2

 

最简单的方法在项目根目录与.git目录同一位置创建一个文件: .gitignore

touch .gitignore

vi .gitignore

将需要忽略的文件名放到这个文件,支持glob风格的通配符

:wq

 

git commit

然后.gitignore中的忽略,起作用

 

1,首先在命令行创建.gitignore文件

  $ touch .gitignore

2,在文件.gitignore 加入要忽略的文件入(只要把需要忽略的文件加入就可以了,Linux还可以vi、vim;windows下使用记事本也可以)

$ echo *.class >  .gitignore

注:如果要忽略的文件已被git管理,需要先移除,命令如下:

e.g.:

git rm -r --cached  WebRoot/WEB-INF/classes/**/*

-r:递归

3、把.gitignore文件push到git服务器

git commit

4,加入到全局的git中(也可以在项目根目录放一个.gitignore)

$ git config --global core.excludesfile .gitignore

 

错误1:
Git Pull Failed: refusing to merge unrelated histories
解决办法:
假如我们的源是origin,分支是master,那么我们 需要这样写git pull origin master ----allow-unrelated-histories
出现错误的原因:
git remote add <主机名> <网址>时写错了主机名,然后第二次执行git remote add 命令。然后使用git remote rm <主机名>删除第一次错误创建的主机名


错误2:
Can't update: no tracked branch
No tracked branch configured for branch master.
To make your branch track a remote branch call, for example,

git branch --set-upstream-to origin/master master (show balloon)
解决办法:
使用提示的命令:git branch --set-upstream-to origin/master

 

相关文章
|
19天前
|
开发工具 git 开发者
|
19天前
|
开发工具 git 开发者
Git Pull vs. Git Fetch:深度解析
【2月更文挑战第29天】
434 0
Git Pull vs. Git Fetch:深度解析
|
19天前
|
开发工具 git
git merge和git rebase异同
git merge和git rebase异同
90 0
|
19天前
|
开发工具 git
git pull之后出现REBASE(1/1)
git pull之后出现REBASE(1/1)
25 3
|
19天前
|
开发工具 git
避免git产生Merge branch 'foo' into 'bar'提交
避免git产生Merge branch 'foo' into 'bar'提交
38 3
|
19天前
|
开发工具 git
git 拉取代码仓库代码报错(合并错误 refusing to merge unrelated histories)
git 拉取代码仓库代码报错(合并错误 refusing to merge unrelated histories)
30 0
|
19天前
|
存储 网络安全 数据处理
git远程操作,推送【push】,拉取【pull】,忽略特殊文件,配置别名,标签管理
git远程操作,推送【push】,拉取【pull】,忽略特殊文件,配置别名,标签管理
|
19天前
|
开发工具 git
百度搜索:蓝易云【git常用命令之Merge】
请注意,合并过程中可能会出现冲突,需要手动解决冲突后再进行提交。合并操作应谨慎执行,特别是在重要的项目中,应先进行代码审查或测试,确保合并不会引入错误或不稳定的代码。
175 4
|
19天前
|
开发工具 git 开发者
百度搜索:蓝易云【Git:Rebase和Merge之间的区别】
综上所述,Rebase和Merge在代码合并方面具有不同的特点和用途。根据具体的情况和个人偏好,选择适合的合并方式能够更好地管理和组织代码。
47 0
|
开发工具 git
Git 中 merge 和 rebase 的区别
$ git pull --rebase和$ git pull区别 是git fetch + git merge FETCH_HEAD的缩写,所以默认情况下,git pull就是先fetch,然后执行merge操作,如果加-rebase参数,就是使用git rebase代替git merge 。
25559 0