ubuntu系统下git使用

首先,github是一个分布式的版本管理系统,它允许每个开发者都保存、更改、提交版本。

新建一个github本地库

首先,github有两个仓库,一个存在github服务器上,称为远程仓库。另一个存在本地,称为本地库。初始化后,本地库的目录下,会生成.git文件夹。

$mkdir localDir
$cd localDir
# 初始化一个本地的respository(仓库)
$git init

随后,将本地的文件添加如暂存区,并提交给本地库。

#将该目录下的所有文件添加进暂存区
$git add .
#把暂存区文件提交到本地库,-m是提交说明
$git commit -m "first commit"

#查看本地库的文件状态
$git status

将本地库与远程库关联

首先在github账户下,新建一个Repository,并复制git地址,使用git remote命令,origin是分支的原点。至于分支原理,还没了解。

$git remote add origin "git地址"

将项目从本地库上传到远程库

git commit只是更新本地库的版本,而git push才是真正的同步本地库与远程库版本。记住,每次git push前都要git pull一下,看看github上的文件是否有更新,并解决文件冲突

$git push -u origin master

删除本地库

直接删除.git文件夹即可

$cd localDir
$rm -rf .git

问题一

在 github 上建了个仓库,里面只有一个 README.md 文件。 我想把本地的一个项目传上去,在我初始化完办本地的仓库后, git pull origin master 时就出现了这样一条错误:

来自 https://github.com/chifredhong/NVDLA
 * branch                master     -> FETCH_HEAD
 * [新分支]              master     -> origin/master
fatal: 拒绝合并无关的历史

解决办法
在pull时使用以下命令:

$git pull origin master --allow-unrelated-histories 

原因是本地库与远程库都有READMD.md,github认为它是两个独立开始的项目。

git pull与git fetch的区别

git fetch:从远程库获取最新版本到工作目录
git pull:从远程库获取最新版本,然后合并工作目录与远程库的文件。
所以,git pull = git fetch +git merge

push时本地库与远程库文件冲突

可以使用git merge命令自动合并。但个人觉得最好手动解决,可以使用mergetool查看两个版本更新的内容。

mergetool:meld

#安装meld
$sudo apt-get install meld
#配置meld为默认的mergetool
$git config --global merge.tool meld
#回滚到合并之前打版本
$git reset --hard 
#启动合并工具
$git mergetool
#如果需要修改mergetool,可以使用以下命令
$git mergetool --tool=vimdiff

添加新版本,并提交

$git add xxx
$git commit -m "replace old with xxx"

你可能感兴趣的:(工具教程)