git的简单使用
编辑时间:2017-03-26 作者:金满斗 浏览量:2209 来源:原创

git是个好东西,让代码管理更简单。

网上教程也很多,自己写下自己常用的吧。

从来没有用git的,先建一个文件夹或者到准备同步的项目文件夹,先git init 新建仓库。然后设置配置文件

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

你的邮箱和昵称。

然后跟着下面有项目的方法走。

本地以前就有项目的,要同步的

方法

先git add .  提交到本地项目

然后用 git status 看看我们的项目的当前状态

当然也可以用简单查看  git status -s    就是后面加S

git commit -m 后面跟着单引号的注释内容快速提交

然后在看git status -s   这里就应该没有什么改变了。

这里是本地仓库提交完成了,如果要提交到远程仓库,

先git remote -v   显示当前项目对应的远程仓库    先看看远程仓库的链接。如果没有远程仓库,可以去开源中国等先建一个仓库。

如果没有链接,则加链接  git remote add   +  自己自定义别名  +链接    这个过程就是加远程仓库。

git remote rm+远程仓库别名          删除远程仓库  这个命令是放这记下的,这里不需要用这个命令。

然后git push  远程链接别名  本地分支,一般是master    如:git push origin master

最后打完收工,本地和远程仓库也同步完成。




要下载的

1:git clone [url]    克隆项目,复制项目    url一般就是开源中国或者git网站的项目地址。


要远端同步到本地的

先git remote -v   显示当前项目对应的远程仓库    先看看远程仓库的链接

然后  git fetch +远端仓库                       //远端的下载到本地

最后 git merge   +远端仓库分支                 //  本地的合并分支

注意:如果merge 报错 refusing to merge unrelated histories 则应该在 git merge   +远端仓库分支   后面加 --allow-unrelated-histories

具体的可以见这个:http://gitref.org/zh/remotes/#fetch

对于许久没有同步的,要先远程同步下到本地,再上传。

删除本地git仓库的资料

解决

可以先清除本地文件夹下的git文件,然后在重新初始化新建的git仓库

//删除文件夹下的所有 .git 文件

    find . -name ".git" | xargs rm -Rf

接着add,commit等操作即可


有时候不能同步的,先清除本地  

有时候不能同步的,先清除本地  方式二:通过命令行,你直接执行git clean -d -fx即可。可能很多人都不明白-d,-fx到底是啥意思,

下一篇关于git的文章会介绍下git clean相关的东西。



git远程强制覆盖本地:
    git fetch --all
    git reset --hard origin/master
    git pull
git强制覆盖本地命令(单条执行):
    git fetch --all && git reset --hard origin/master && git pull


有的第一次上次问题

在使用git 对源代码进行push到gitHub时可能会出错,信息如下

1.png


此时很多人会尝试下面的命令把当前分支代码上传到master分支上。

$ git push -u origin master

但依然没能解决问题

2.png


出现错误的主要原因是github中的README.md文件不在本地代码目录中

3.png

4

可以通过如下命令进行代码合并【注:pull=fetch+merge]

git pull --rebase origin master

4.png


5

执行上面代码后可以看到本地代码库中多了README.md文件


5.png



git忽略已经被提交的文件   

例子:

现在项目的根目录放了 .gitignore 文件,并且git远程仓库的项目根目录已经有了 logs文件夹。

由于每次本地运行项目,都会生成新的log文件,但是我并不想提交logs文件夹里面的内容,所以要在.gitignore写logs的规则。

我尝试过添加以下规则

logs/*.log
logs/
/logs/

但是运行git status的时候,始终能看到modified:logs/xx.log 。

正确的做法是:

git rm --cached logs/xx.log,然后更新 .gitignore 忽略掉目标文件,最后 git commit -m "We really don't want Git to track this anymore!"


分支管理:

查看所有分支  git branch

创建分支     git branch +自定义分支名

却换分支    git checkout +自定义分支名

合并分支    git git merge +自定义分支名

删除分支    git branch -d  +自定义分支名


删除分支:$ git branch -d [name] ---- -d选项只能删除已经参与了合并的分支,对于未有合并的分支是无法删除的。如果想强制删除一个分支,可以使用-D选项

合并分支:$ git merge [name] ----将名称为[name]的分支与当前分支合并

创建远程分支(本地分支push到远程):$ git push origin [name]

删除远程分支:$ git push origin :heads/[name]

我从master分支创建了一个issue5560分支,做了一些修改后,使用git push origin master提交,但是显示的结果却是'Everything up-to-date',发生问题的原因是git push origin master 在没有track远程分支的本地分支中默认提交的master分支,因为master分支默认指向了origin master 分支,这里要使用git push origin issue5560:master 就可以把issue5560推送到远程的master分支了。


    如果想把本地的某个分支test提交到远程仓库,并作为远程仓库的master分支,或者作为另外一个名叫test的分支,那么可以这么做。


$ git push origin test:master         // 提交本地test分支作为远程的master分支 //好像只写这一句,远程的github就会自动创建一个test分支

$ git push origin test:test              // 提交本地test分支作为远程的test分支


如果想删除远程的分支呢?类似于上面,如果:左边的分支为空,那么将删除:右边的远程的分支。


$ git push origin :test              // 刚提交到远程的test将被删除,但是本地还会保存的,不用担心


版本(tag)操作相关命令

查看版本:$ git tag

创建版本:$ git tag [name]

删除版本:$ git tag -d [name]

查看远程版本:$ git tag -r

创建远程版本(本地版本push到远程):$ git push origin [name]

删除远程版本:$ git push origin :refs/tags/[name]


查看提交记录  git log   记录太长按 q可退出

回退到某提交   git reset --hard + 以前的commit前几位就行

 





来说两句吧